在Linux中,你可以使用OpenSSL工具将PFX/P12格式的证书转换为单独的CRT(证书)、KEY(私钥)文件以及提取证书链
1. 提取私钥文件(.key)
openssl pkcs12 -in your_certificate.pfx -nocerts -out private.key -nodes
系统会提示你输入PFX文件的密码。
2. 提取证书文件(.crt)
openssl pkcs12 -in your_certificate.pfx -clcerts -nokeys -out certificate.crt
3. 提取证书链(如果有)
openssl pkcs12 -in your_certificate.pfx -cacerts -nokeys -out chain.crt
4. (可选) 将私钥转换为无密码格式
如果私钥有密码保护而你想移除密码:
openssl rsa -in private.key -out private_unencrypted.key
5. (可选) 验证提取的文件
验证私钥和证书是否匹配:如果两个命令输出的MD5值相同,则表示匹配。
openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in private.key | openssl md5
参数说明:
-in your_certificate.pfx:指定输入的PFX文件-nocerts:不输出证书,只输出私钥-nokeys:不输出私钥,只输出证书-nodes:不加密私钥-clcerts:只输出客户端证书(不输出CA证书)
注意事项:
- 确保在安全的环境中操作,因为私钥是敏感信息
- 如果PFX文件有密码保护,上述命令会提示你输入密码
- 某些情况下,证书链可能已经包含在.crt文件中,不需要单独提取
- 你可以使用
-password pass:yourpassword
参数来避免交互式密码输入(不推荐用于生产环境)
完整示例:
# 提取私钥
openssl pkcs12 -in example.pfx -nocerts -out example.key -nodes# 提取主证书
openssl pkcs12 -in example.pfx -clcerts -nokeys -out example.crt# 提取证书链
openssl pkcs12 -in example.pfx -cacerts -nokeys -out chain.crt# 合并证书和证书链(某些服务器需要)
cat example.crt chain.crt > fullchain.crt