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

Posted

技术标签:

【中文标题】使用 openssl 将多个证书加载到 PKCS12【英文标题】:Load multiple certificates into PKCS12 with openssl 【发布时间】:2013-11-11 08:47:33 【问题描述】:

我正在尝试 格式中。命令如下:

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】:

首先,确保您的所有证书都是 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 文档解释了不同的选项。

【讨论】:

有没有办法自动完成?手动将证书添加到单个文件中似乎不切实际(当涉及到从 PKCS12 文件中添加/删除证书时)。 您可以在用于创建 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 ... 有什么方法可以使用openssl 将证书添加 到现有的pkcs12 文件中?我知道你可以从头开始组装一个,但是添加一个呢? @ChristopherSchultz 我也在为此苦苦挣扎。我相信只有 Java 的 keytool 才能正确处理这个问题。

以上是关于使用 openssl 将多个证书加载到 PKCS12的主要内容,如果未能解决你的问题,请参考以下文章

openssl生成RSA格式及pkcs1与pkcs8格式互相转换

如何解决错误“无法加载PEM客户端证书,OpenSSL错误:02001003:系统库:fopen:没有这样的过程”?

OpenSSL 在 PKCS12 导出期间挂起,并显示“正在将‘屏幕’加载到随机状态”

使用.csv文件作为参考以生成多个自签名证书

Pem私钥pkcs1和pkcs8之间互转

如何使用 OpenSSL 为 Postgresql DB 的多个用户创建客户端证书?