我有一个包含完整证书链和私钥的PKCS12文件。我需要将其分解为3个文件用于一个应用程序。我需要的3个文件如下(PEM格式):
- 未加密的密钥文件
- 客户端证书文件
- CA证书文件(根目录和所有中间文件)
这是我必须执行的常见任务,因此我正在寻找一种无需手动编辑输出即可执行此操作的方法。
我尝试了以下方法:
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>
这很好用,但是输出包含bag属性,应用程序不知道该属性。
经过一番搜索,我找到了一种建议的解决方案,将结果通过x509传递以剥离bag属性。
openssl x509 -in <clientcert.cer> -out <clientcert.cer>
这可行,但是我在cacert文件上遇到了问题。输出文件仅包含链中3个证书之一。
有没有办法避免在pkcs12命令的输出中包含bag属性,还是有办法使x509命令的输出包含所有证书?另外,如果通过x509运行它是最简单的解决方案,是否有办法将pkcs12的输出通过管道传递到x509,而不是两次写入文件?