将包含私钥和证书的 PKCS#12 文件 (.pfx .p12) 转换为 PEM,例如:
openssl pkcs12 -in cert_and_pvt_key.pfx -out cert_and_pvt_key.pem
然后我有一个包含证书和私钥的PEM文件,现在,我想分别获取证书文件和私钥文件,是的,我知道cert_and_pvt_key.pem是文本格式,我们可以复制 key 部分和证书我们喜欢的部分,但是,这并不优雅,我想要一些复杂的东西,比如 openssl pkcs12
,有什么可用的吗?
最佳答案
您可以使用 -nocerts
和 -nokeys
选项到 openssl pkcs12
只输出您需要的部分。依次运行 openssl pkcs12
:
openssl pkcs12 -in cert_and_pvt_key.pfx -nokeys -out cert.pem
然后:
openssl pkcs12 -in cert_and_pvt_key.pfx -nocerts -out pvt_key.pem
如果您无法访问原始 PKCS#12 文件,那么它会变得有点困难。以下应该工作:
openssl pkcs12 -export -in cert_and_pvt_key.pem | openssl pkcs12 -nokeys -out cert.pem
和:
openssl pkcs12 -export -in cert_and_pvt_key.pem | openssl pkcs12 -nocerts -out pvt_key.pem
但是,这会在创建 PKCS#12 时以及在尝试将文件拆分为证书和 key 时再次要求输入密码。 OpenSSL 提供了 -nodes
动词来禁用此密码短语,但它似乎不适用于 -export
。因此,它会在脚本中失败。
否则,您只能使用 awk
或类似工具拆分文件。这个网站上有很多例子。
关于ssl - 如何通过命令方式从PEM文件中分别只获取证书部分和私钥部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53087467/