将 cer 转换为 pem 时出现 OpenSSL 编码错误

Posted

技术标签:

【中文标题】将 cer 转换为 pem 时出现 OpenSSL 编码错误【英文标题】:OpenSSL encoding errors while converting cer to pem 【发布时间】: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

我做错了什么?

【问题讨论】:

也许您的cer 文件已经是pem 形式。阅读openssl.6102.n7.nabble.com/… 【参考方案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-----

【讨论】:

更改扩展名不会更改文件格式,因此正如预期的那样。

以上是关于将 cer 转换为 pem 时出现 OpenSSL 编码错误的主要内容,如果未能解决你的问题,请参考以下文章

如何从 .cer 中提取 RSA 公钥并使用 OpenSSL 将其存储在 .pem 中?

[证书] OPENSSL将PFX证书转换为PEM格式

将.crt、.cer、.pfx、.p7b、.der的ssl证书转换成.pem格式

无法将 .CER 文件转换为 .PEM [重复]

sh 将.cer转换为.pem

openssl pem转cer文件 并用base64编码解码过程