常用子命令#
分类 |
子命令 |
作用 |
摘要与校验 |
dgst |
生成 MD5/SHA 系列摘要、HMAC |
对称加密 |
enc |
AES, DES, Camellia 等对称算法加解密、Base64 编码 |
非对称密钥操作 |
genpkey/genrsa、rsa、pkey |
生成 RSA/EC 私钥,导出公钥,与私钥格式转换 |
证书请求与签发 |
req、ca |
生成 CSR(证书签名请求),用自签或 CA 签发证书 |
证书管理 |
x509 |
查看、验证、格式转换 X.509 证书 |
PKCS#12 容器 |
pkcs12 |
在 .p12/.pfx 容器中打包/拆包证书与私钥 |
网络测试 |
s_client、s_server |
测试 SSL/TLS 客户端/服务器连接 |
格式转换 |
asn1parse、cms、pkcs7、crl |
ASN.1 解析,CMS/PKCS7 消息处理,CRL 列表 |
随机数 |
rand |
生成随机字节 |
加密算法列表 |
list -cipher-algorithms |
列出可用对称加密算法 |
对称加密#
echo -n "你好啊" \
| openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000 -base64 \
-pass pass:MyPass
echo "U2FsdGVkX1+…" \
| openssl enc -aes-256-cbc -d -salt -pbkdf2 -iter 100000 -base64 \
-pass pass:MyPass
加密文件#
openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000 \
-in plain.txt -out cipher.bin -pass pass:MyPass
解密文件#
openssl enc -aes-256-cbc -d -salt -pbkdf2 -iter 100000 \
-in cipher.bin -out plain.txt -pass pass:MyPass
非对称密钥与证书#
生成 RSA 私钥与公钥#
# 生成 2048 位 私钥
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out key.pem
# 从私钥中导出公钥
openssl pkey -in key.pem -pubout -out pub.pem
生成 CSR(证书签名请求)#
openssl req -new -key key.pem -out req.csr \
-subj "/C=CN/ST=Beijing/L=Beijing/O=Example/OU=IT/CN=example.com"
自签证书#
openssl req -x509 -days 365 -key key.pem -in req.csr -out cert.pem
测试SSL/TLS连接#
客户端#
openssl s_client -connect example.com:443
服务器#
openssl s_server -cert cert.pem -key key.pem -accept 8443