将 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 中?