Bry*_*Kan 52 openssl certificates
我有一个包含完整证书链和私钥的 PKCS12 文件。我需要将它分成 3 个文件用于应用程序。我需要的3个文件如下(PEM格式):
这是我必须执行的一项常见任务,因此我正在寻找一种无需手动编辑输出即可完成此任务的方法。
我尝试了以下方法:
openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.cer>
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是,输出包含包属性,应用程序不知道如何处理。
经过一番搜索,我找到了一个建议的解决方案,即通过 x509 传递结果以去除包属性。
openssl x509 -in <clientcert.cer> -out <clientcert.cer>
Run Code Online (Sandbox Code Playgroud)
这有效,但我遇到了 cacert 文件的问题。输出文件仅包含链中的 3 个证书之一。
有没有办法避免在 pkcs12 命令的输出中包含包属性,或者有没有办法让 x509 命令输出包含所有证书?此外,如果通过 x509 运行它是最简单的解决方案,有没有办法将 pkcs12 的输出通过管道传输到 x509 而不是两次写出文件?
Bry*_*Kan 61
我最终想到的解决方案是通过 sed 将其通过管道传输。
openssl pkcs12 -in <filename.pfx> -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <cacerts.cer>
Run Code Online (Sandbox Code Playgroud)
没有的另一种解决方案sed
:
openssl pkcs12 -in <filename.pfx> -nocerts -nodes | openssl pkcs8 -nocrypt -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys | openssl x509 -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | openssl x509 -out <cacerts.cer>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
119633 次 |
最近记录: |