我需要将客户端证书 .p12 文件转换为 .pem,我使用以下命令完成此操作:
openssl pkcs12 -in combo.p12 -out combo.pem
将 .p12 导入 Firefox 进行测试,我被要求输入密码,输入数据后它就被导入了,但导入 .pem 文件却没有任何反应,什么都没有发生。
我制作的 .pem 证书的格式(......用于敏感数据):
Bag Attributes
friendlyName: cn=...
localKeyID: ...
Key Attributes: <No Attributes>
-----BEGIN ENCRYPTED PRIVATE KEY-----
(my encrypted data)
-----END ENCRYPTED PRIVATE KEY-----
Bag Attributes
friendlyName: cn=...
localKeyID: ...
subject=C = ....
issuer=....
-----BEGIN CERTIFICATE-----
(my encrypted data)
-----END CERTIFICATE-----
来源这里https://knowledge.digicert.com/solution/SO5437.html说 Firefox 应该同时支持 .pem 和 .p12,并且 Firefox 导入文件提示在文件过滤器菜单中提供了“PKCS12 文件”和“证书文件”选项。
我还可以将 .p12 与 PHP(CURL)和 SoapUI 一起使用,但不能将我的 .pem 文件(SoapClient)与其中任何一个一起使用。
或者,如果这不是真正的问题,我该如何验证我的 .pem 文件是否正常?我试过:
openssl verify combo.pem
返回
error 20 at 9 depth lookup: unable to get local issuer certificate
error combo.pem: verification failed
答案1
pem 文件可以保存证书的不同部分 - 因此您可以使用不同的方法来构建证书。就您而言 - 您收到的错误意味着您缺少颁发者证书来验证证书的可信度。
因此,请尝试按以下方式将完整链添加到 pem 中:
-----开始 RSA 私钥-----
(您的私钥:your_client.key)
-----结束 RSA 私钥-----
-----开始证书-----
(您的主要 SSL 证书:your_client.crt)
-----证书结束-----
-----开始证书-----
(您的中级证书:your_Issuer.crt)
-----证书结束-----
-----开始证书-----
(您的根证书:Your_Root.crt)
-----证书结束-----