常用子命令

分类 子命令 作用
摘要与校验 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