ssl - 如何以命令方式分别从 PEM 文件中获取证书部分和私钥部分?
问题描述
将包含私钥和证书的 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 是文本格式,我们可以像我们一样复制密钥部分和证书部分喜欢,但是,这并不优雅,我想要一些复杂的东西,比如openssl pkcs12
,有什么可用的吗?
解决方案
您可以使用-nocerts
and-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 时以及在尝试将文件拆分为证书和密钥时再次要求输入密码。OpenSSL 提供了-nodes
禁用此密码短语的动词,但它似乎不适用于-export
. 因此,它会在脚本中失败。
否则,您只能将文件拆分为awk
或类似。这个网站上有很多例子。
推荐阅读
- time-complexity - 评估二项式系数的时间复杂度
- javascript - 如何使我的复选框仅被单击一次,而在 React.js 中未选中其他复选框
- java - 使用扫描仪从文本文件中读取某一行
- javascript - React Hooks 与 Redux 保持 App 状态
- node.js - 将动态生成的图像提供给聊天机器人
- c# - 如何在 C# 中动态链接 Linq 方法?
- python - 通过按钮使用功能时 Kivy 更新标签失败
- flutter - “flutter create”命令是如何工作的?
- android-studio - 为什么我拖动元素时我的应用程序崩溃?
- reactjs - React 中更多支持的可选链接替代方案?