使用openssl将多个证书加载到PKCS12中

27

我正在尝试使用openssl将多个证书加载到PKCS12格式中。命令如下:

openssl pkcs12 -export -in cert1.arm -inkey cert1_private_key.pem -certfile cert2.arm -certfile cert3.arm -certfile RootCert.pem -name "Test" -out test.p12

解析生成的 PKCS12 文件后,只有最后一个证书被包含在文件中:

openssl pkcs12 -in test.p12 -info -nodes

我也尝试将它们分别导入到pkcs12文件中,但在所有尝试中,只有最后一个证书留在了文件中。

有任何想法在哪里解决这个问题吗?

1个回答

26

首先,请确保您的所有证书都是PEM格式的。然后,制作一个名为“certs.pem”的单个文件,其中包含其余的证书(cert2.arm、cert3.arm和RootCert.pem)。

然后像这样使用命令:

openssl pkcs12 -export -in cert1.arm -inkey cert1_private_key.pem -certfile certs.pem -name "Test" -out test.p12

openssl pkcs12 文档详细说明了不同的选项。


1
有没有办法自动完成这个任务?手动将证书添加到单个文件中似乎不太实际(特别是在向PKCS12文件中添加/删除证书时)。 - Mohammad Khodaei
5
您可以在创建pkcs12文件时,使用同一命令行将单个文件连接成一个组合文件。例如,在Windows中,type cert2.arm cert3.arm RootCert.pem > combined.pem & openssl pkcs12 ...。在Linux/Unix中,您可以执行cat cert2.arm cert3.arm RootCert.pem > combined.pem; openssl pkcs12 ... - gtrig
7
使用 openssl,有没有一种方式可以向现有的 pkcs12 文件中添加证书?我知道你可以从头开始组装一个,但是只是添加一个怎么办? - Christopher Schultz
3
@ChristopherSchultz 我也在这方面苦苦挣扎。我相信只有Java中的keytool可以正确处理这个问题。 - Misko
我认为这是openssl工具的一个限制。我总是不得不将我想要的所有证书附加到一个PEM文件中,然后使用openssl将其导出为pkcs12格式。 - Fabio O. Padilha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接