从 pem 转换为 der 时,openssl 证书链丢失

Art*_*ice 4 certificate openssl x509

我有一个来自 Letsencrypt 的 .pem 格式的证书链,称为 fullchain.pem

它在链中有 2 个证书:

keytool -printcert -v -file fullchain.pem |grep "Certificate fingerprints" |wc -l
2
Run Code Online (Sandbox Code Playgroud)

当我将其转换为 .der 时使用

openssl x509 -in fullchain.pem -out cert.der -outform DER
Run Code Online (Sandbox Code Playgroud)

它只导出最后一个

keytool -printcert -v -file cert.der |grep "Certificate fingerprints" |wc -l
1
Run Code Online (Sandbox Code Playgroud)

这是openssl中的错误吗?我错过了一个参数吗?

gar*_*Red 7

您不能通过以 PEM 格式的方式连接它们来获得 DER 编码的链。

二进制格式的链将采用 PKCS#7 格式。要将 PEM 链转换为 PKCS#7,请使用:

openssl crl2pkcs7 -nocrl -certfile fullchain.pem -out fullchain.p7b
Run Code Online (Sandbox Code Playgroud)

然后,查看内容:

openssl pkcs7 -in fullchain.p7b -print_certs -noout
Run Code Online (Sandbox Code Playgroud)

添加-text以查看所有证书详细信息。

如果输入 PEM 文件还包含私钥,则更好的格式是 PKCS#12,因为可以使用密码保护此格式。