【问题标题】:OpenSSL encoding errors while converting cer to pem将 cer 转换为 pem 时出现 OpenSSL 编码错误
【发布时间】:2012-12-20 22:01:35
【问题描述】:
我正在尝试通过openssl将.cer文件转换为.pem,命令是:
openssl x509 -inform der -in certnew.cer -out ymcert.pem
这就是我得到的错误:
unable to load certificate
140735105180124:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319:
140735105180124:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=X509
我做错了什么?
【问题讨论】:
标签:
linux
openssl
certificate
ssl-certificate
【解决方案1】:
要扩展existing answer,如explained by ssl.com,.cer 文件可以是der 或pem 编码。如果它是 der 编码,你需要像你一样进行转换,但如果它已经是 pem 编码,则不需要转换,如果你尝试,你会得到错误 - 你可以重命名文件。
如果您不确定,最好知道 .der 是二进制格式,而 .pem 是 ascii 格式。如果您回显证书的内容,.pem 文件将如下所示:
-----BEGIN CERTIFICATE-----
MIIEuTCCA6G[snip lots of chars]
XmCpajQ==
-----END CERTIFICATE-----
.der 文件如下所示:
0▒▒0▒▒▒@*▒H▒▒▒▒▒0
0▒▒1
0 UUS10U
VeriSign, Inc.10U
VeriSign Trust Network1:08U
【解决方案2】:
我也有这个问题。只需将 CER 重命名为 PEM 就足够了 :)
【解决方案3】:
无需将文件从 .cer 转换为 .pem,您只需要使用此命令即可获得所需的结果
openssl x509 -inform pem -in certificate.cer -pubkey -noout > certificate_publickey.pem
这完全取决于@eis 提到的用于生成证书的编码类型
【解决方案4】:
我对 CRT 格式有类似的问题,在转换为 pem 时出现错误。我做同样的事情,比如 L0g0ff 并且它有效。下面有更多详细信息。
-
我检查了证书的详细信息:
openssl x509 -in certificate.crt -noout -text
将扩展名从 certificate.crt 更改为 certificate.pem 后,我得到了预期格式的文件:
-----BEGIN CERTIFICATE-----
...........................
-----END CERTIFICATE-----