33

我正在尝试通过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

我究竟做错了什么?

4

4 回答 4

28

正如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
于 2016-09-20T14:35:08.320 回答
20

我也有这个问题。只需将 CER 重命名为 PEM 就足够了 :)

于 2014-05-15T12:16:39.880 回答
1

无需将文件从 .cer 转换为 .pem 您只需要使用此命令,所需的结果将是获得 openssl x509 -inform pem -in certificate.cer -pubkey -noout > certificate_publickey.pem 这一切都取决于哪种编码类型用于生成@eis 提到的证书

于 2020-08-24T06:00:30.730 回答
0

我对 CRT 格式有类似的问题,在转换为 pem 时出现错误。我做同样的事情,比如 L0g0ff 并且它有效。下面有更多细节。

  1. 我检查了证书的详细信息:

    openssl x509 -in certificate.crt -noout -text

  2. 将扩展名从 certificate.crt 更改为 certificate.pem 后,我得到预期格式的文件:

-----BEGIN CERTIFICATE----- ........................... -----END CERTIFICATE-----

于 2018-02-21T09:40:37.627 回答