it-roy-ru.com

Ошибки кодирования OpenSSL при преобразовании cer в pem

Я пытаюсь преобразовать файл .cer в .pem через openssl, команда:

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

Что я делаю неправильно?

13
Arthur Kushman

У меня тоже была эта проблема. Достаточно просто переименовать CER в PEM :)

6
L0g0ff

Чтобы расширить существующий ответ , как объясненный 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
10
eis

У меня похожая проблема с форматом CRT, которая выдает ошибку при конвертации в pem. Я делаю то же самое, что и L0g0ff, и это работает. Ниже более подробная информация.

  1. Я проверил детали сертификата: 

    openssl x509 -in certificate.crt -noout -text

  2. после изменения расширения на Certificate.Crt на Certificate.pem я получаю файл в ожидаемом формате:

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

0
tarkos