openssl SSL/TLS加密
OpenSSL
是一个广泛使用的工具和库,用于处理安全协议(如 SSL/TLS)和进行加密操作。它提供了许多命令行功能,支持证书生成、私钥/公钥生成、加密/解密 操作、哈希计算等。
下面是常见的 openssl
命令和操作示例:
1. 检查 OpenSSL 版本
查看已安装的 OpenSSL 版本:
openssl version
2. 生成 RSA 密钥对
生成 RSA 私钥和公钥:
-
生成 2048 位的私钥:
openssl genpkey -algorithm RSA -out private.key -aes256
这会生成一个加密的私钥文件
private.key
,并要求输入密码(可以省略-aes256
,只生成未加密的私钥)。 -
从私钥中提取公钥:
openssl rsa -pubout -in private.key -out public.key
3. 生成证书签名请求(CSR)
生成一个 CSR 请求文件,用于申请 SSL 证书:
openssl req -new -key private.key -out request.csr
此命令会提示你输入证书的详细信息,如国家、组织、公共域名等。
4. 自签名 SSL 证书
如果你需要一个自签名证书(通常用于测试环境),可以使用以下命令:
openssl req -x509 -new -key private.key -out certificate.crt -days 365
这将使用你的私钥生成一个有效期为 365 天的自签名证书。
5. 查看证书内容
查看证书文件的详细信息:
openssl x509 -in certificate.crt -text -noout
此命令将输出证书的详细内容,如公钥、有效期、颁发者等。
6. 验证证书
验证证书链是否有效:
openssl verify -CAfile ca-certificates.crt certificate.crt
-CAfile
参数指向一个包含根证书的文件。
7. 从证书中提取公钥
从一个证书中提取公钥:
openssl x509 -pubkey -noout -in certificate.crt > pubkey.pem
8. 证书转换
将证书格式进行转换,例如从 PEM 转换为 DER 格式:
openssl x509 -in certificate.crt -outform DER -out certificate.der
将证书从 PEM 格式转换为 PFX 格式(用于 Windows 环境):
openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt
9. 创建加密文件
用公钥加密一个文件:
openssl rsautl -encrypt -inkey public.key -pubin -in plaintext.txt -out encrypted.bin
使用私钥解密文件:
openssl rsautl -decrypt -inkey private.key -in encrypted.bin -out decrypted.txt
10. 生成对称加密密钥
生成一个 AES 密钥:
openssl rand -base64 32
这将生成一个 256 位的 AES 密钥。
11. 文件加密与解密
使用对称加密算法(如 AES)加密文件:
openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.bin
其中 -aes-256-cbc
表示使用 AES 算法和 CBC 模式。
解密文件:
openssl enc -d -aes-256-cbc -in encrypted.bin -out decrypted.txt
12. 计算文件哈希
计算文件的哈希值(如 SHA-256):
openssl dgst -sha256 filename
13. 生成 HMAC
生成带有密钥的哈希值(HMAC):
openssl dgst -sha256 -mac HMAC -macopt key:secretkey file.txt
14. 验证私钥
验证私钥文件是否有效:
openssl rsa -in private.key -check
15. 生成 Diffie-Hellman 参数
生成 Diffie-Hellman 密钥交换所需的参数:
openssl dhparam -out dhparam.pem 2048
16. 创建 PFX(PKCS#12)文件
将公钥证书和私钥打包成 PFX 格式(用于 Windows):
openssl pkcs12 -export -out mycert.pfx -inkey private.key -in certificate.crt -certfile CA.crt
17. 生成 EC 密钥对
生成椭圆曲线(EC)密钥对:
openssl ecparam -name prime256v1 -genkey -noout -out ec_private.key
openssl ec -in ec_private.key -pubout -out ec_public.key
18. 使用 OpenSSL 进行 TLS 握手
你可以使用 s_client
命令来模拟客户端与服务器的 TLS 握手,诊断 SSL/TLS 连接:
openssl s_client -connect example.com:443
19. 提取 PEM 格式的证书
从 PFX 文件中提取证书:
openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out certificate.crt
20. 证书撤销列表(CRL)
检查证书撤销列表(CRL):
openssl crl -in crl.pem -text
小结
openssl
是一个强大的工具,支持多种加密和证书管理操作。从密钥生成到证书管理,再到数据加密和哈希计算,openssl
能够完成几乎所有与加密相关的任务。如果你需要执行安全相关的操作,openssl
是一个非常有用的工具。