openssl .p12 cert只有一个连接的.pem证书信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openssl .p12 cert只有一个连接的.pem证书信息相关的知识,希望对你有一定的参考价值。
我有两个.p12证书,我使用此命令转换为.pem文件:
openssl pkcs12 -in cert1.p12 -out cert1.pem -nodes
openssl pkcs12 -in cert2.p12 -out cert2.pem -nodes
然后我将两个.pem文件链接到一个.pem文件中:
cat cert1.pem cert2.pem > combo.pem
然后我将combo.pem
转换为.p12证书:
openssl pkcs12 -export -in combo.pem -out combo.p12
但是当我去检查combo.p12
证书的内容时,它只有cert1.pem的信息:
keytool -v -list -keystore combo.p12
我希望combo.p12
证书同时具有.pem证书信息。我究竟做错了什么?
为了便于说明,我们来看看使用StackExchange.com证书链重复实验时会发生什么。我已经从网站下载它们并将它们转换为PEM并将它们连接成一个PEM文件,就像你一样。它被称为SE.pem
。然后将它们转换为PKCS#12
格式,如下所示:
$ openssl pkcs12 -export -in SE.pem -out SE.p12
unable to load private key
140736004633472:error:0906D06C:PEM routines:PEM_read_bio:no start line:crypto/pem/pem_lib.c:686:Expecting: ANY PRIVATE KEY
你没有提到这个。没有私钥的工作所需的附加参数是-nokeys
,如下所示:
$ openssl pkcs12 -export -in SE.pem -out SE.p12 -nokeys
Enter Export Password:
Verifying - Enter Export Password:
然后验证生成的.p12
文件中是否包含所有内容:
$ openssl pkcs12 -info -in SE.p12 | grep subject=
Enter Import Password:
MAC:sha1 Iteration 2048
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Certificate bag
Certificate bag
subject=/C=US/ST=NY/L=New York/O=Stack Exchange, Inc./CN=*.stackexchange.com
subject=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
subject=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
我无法弄清楚为什么keytool
没有正确列出证书,这两个工具似乎期望.p12
包的内容不同:
$ keytool -list -v -keystore SE.p12 -storetype pkcs12
Enter keystore password:
Keystore type: PKCS12
Keystore provider: SunJSSE
Your keystore contains 0 entries
我实际上可能会问自己一个不同的SO问题:-)。这对您的情况至关重要,还是只是另一个验证步骤?
以上是关于openssl .p12 cert只有一个连接的.pem证书信息的主要内容,如果未能解决你的问题,请参考以下文章
openssl .p12 证书只有一个串联的 .pem 证书信息
OpenSSL 作为 CA,无需接触 certs/crl/index/etc 环境
OpenSSL:无法验证 Experian URL 的第一个证书