【问题标题】: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 并且它有效。下面有更多详细信息。

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

          openssl x509 -in certificate.crt -noout -text

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

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

        【讨论】:

        • 更改扩展名不会更改文件格式,因此正如预期的那样。
        猜你喜欢
        • 2013-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-13
        • 1970-01-01
        • 1970-01-01
        • 2019-05-24
        • 2018-11-13
        相关资源
        最近更新 更多