ssl - 如何通过命令方式从PEM文件中分别只获取证书部分和私钥部分?

标签 ssl openssl certificate private-key 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是文本格式,我们可以复制 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/

相关文章:

authentication - 发送客户端证书如何不将客户端暴露给模拟

openssl - 调用 OpenSSL EVP 函数的 Delphi/Pascal 示例

android - QT Windows 到 Android 必要性项目变更

java - 如何在 Jersey 服务器中获取/注入(inject)当前的 SSLSession?

facebook - IIS 7.5 中的 2 个 SSL、3 个网站、1 个 IP

c++ - Boost.Asio SSL 线程安全

java - Java 如何验证证书是否为 EV 证书?

java - 使用AWS作为证书存储

ruby-on-rails - Rails、DNSimple、Heroku 和 SSL - 我需要证书吗?

ruby-on-rails - Heroku 控制台中的预期 (200) <=> 实际 (401 未经授权)