OpenSSL 常用命令

OpenSSL Useful Commands

以下是使用 OpenSSL 进行证书管理和操作的常用命令及说明

OpenSSL x509 命令

查看证书信息

openssl x509 -in signed.crt -noout -dates             # 打印证书的过期时间
openssl x509 -in cert.pem -noout -text                # 打印证书的内容
openssl x509 -in cert.pem -noout -serial              # 打印证书的序列号
openssl x509 -in cert.pem -noout -subject             # 打印证书的拥有者名字
# 按 RFC2253 格式打印拥有者名字
openssl x509 -in cert.pem -noout -subject -nameopt RFC2253
# 在支持 UTF8 的终端中一行打印拥有者名字
openssl x509 -in cert.pem -noout -subject -nameopt oneline -nameopt -escmsb
openssl x509 -in cert.pem -noout -fingerprint         # 打印证书的 MD5 指纹
openssl x509 -sha1 -in cert.pem -noout -fingerprint   # 打印证书的 SHA 指纹

格式转换

将 PEM 格式的证书转为 DER 格式

openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER

证书与 CSR 相关操作

# 将证书转为 CSR
openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem

# 使用 CSR 生成自签名证书并增加 CA 扩展项
openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem -out cacert.pem

# 使用 CSR 生成用户证书并增加扩展项
openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial

# 查看 CSR 文件细节
openssl req -in my.csr -noout -text

SSL 私钥管理

证书私钥 (PrivateKey) 添加和去除密码

检测私钥密码是否正确

$ openssl rsa -text -noout -in server.key
Private-Key: (2048 bit)
modulus:
00:b0:fd:c2:81:60:3f:d2:dc:fe:2d:34:c6:46:1e:
08:72:c3:78:f3:4d:12:16:b9:39:3e:0b:d3:8b:e7:

添加私钥密码

系统会提示输入并确认密码, 生成加密后的私钥文件 encrypt.key

$ openssl rsa -des -in server.key -out encrypt.key
writing RSA key
Enter PEM pass phrase:               # 输入密码
Verifying - Enter PEM pass phrase:   # 再次输入密码
encrypt.key                          # 这个文件就是加密过的私钥

移除私钥密码

系统会提示输入原密码, 生成移除密码的私钥文件 nopassword.key

$ openssl rsa -in encrypt.key -out nopassword.key
writing RSA key
Enter PEM pass phrase:               # 输入密码
Verifying - Enter PEM pass phrase:   # 再次输入密码

移除 PKCS#12 (.pfx.p12) 私钥密码

当拿到一个包含私钥和公钥的 PKCS#12 格式证书 (.pfx.p12 文件), 并需要将 PKCS#12 格式转换为 PEM 格式, 然后移除私钥密码

查看证书信息

openssl pkcs12 -info -in cert.pfx

格式转换

将 PKCS#12 转为 PEM

openssl pkcs12 -in cert.pfx -out cert2.pem

分离公钥和私钥

# 提取公钥
openssl x509 -in cert2.pem -out cert2.crt

# 提取私钥
openssl rsa -in cert2.pem -out cert2.key

移除私钥密码

openssl rsa -in cert2.key -out cert22.key

合并成新的 PFX 文件

openssl pkcs12 -export -inkey cert22.key -in cert2.crt -out cert2.pfx

转换回 PEM 格式

openssl pkcs12 -in cert2.pfx -out cert22.pem
最后更新于 2021-07-30
使用 Hugo 构建
主题 StackJimmy 设计