Форматы сертификатов X.509 (SSL) и преобразования между ними

SSL-сертификаты все плотнее входят в нашу жизнь и трудно представить современного администратора, никогда не имевшего с ними дело. Но, как показывает практика, работа с сертификатами все еще вызывает затруднение у многих наших коллег и виной тому недостаточный объем теоретических знаний. Наиболее частые сложности возникают с форматами сертификатов, поэтому мы сегодня решили внести ясность в этот вопрос и разобрать какие форматы сертификатов бывают и как можно выполнять преобразования между ними.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Форматы сертификатов

Начнем с того, что термин сертификат не является полностью корректным. Если мы говорим об инфраструктуре открытых ключей (PKI), то в ее основе лежит понятие ключевой пары — открытого и закрытого ключа. Сертификат — это средство распространения открытого ключа, которое содержит сам открытый ключ и ряд дополнительной информации. Сертификат является публичным и общедоступным. Закрытый ключ, наоборот, секретная информация и должен храниться в безопасном месте.

Но, как говорится, из песни слов не выкинешь и понятие сертификат широко используется и специалистами, и простыми пользователями в самом широком смысле: подразумевая и сам сертификат, и ключ сертификата, и полностью ключевую пару. Поэтому, каждый раз, когда вам встречается это слово, то нужно, прежде всего определиться в каком контексте оно употребляется и что именно значит.

Также при работе с сертификатами вам обязательно встретится аббревиатура X.509, это стандарт для сертификатов и ключей PKI, определяющий их формат, структуру и способы работы с ними. Поэтому, когда речь идет о X.509, то мы понимаем, что это сертификаты PKI.

Но перейдем к форматам. Серьезную путаницу вносит то, что расширения сертификатов и ключей не всегда четко указывают на формат, точнее даже наоборот и точно убедиться с чем именно вы имеете дело можно только ознакомившись с содержимым. Мы не будем рассматривать все возможные варианты форматов, ограничимся только самыми ходовыми.

Формат DER

Это бинарный формат для сертификатов и ключей, фактически он является исходным, так как изначально ключи — это некоторые бинарные сущности. Чаще всего используется на платформе Java и в Windows, там это формат по умолчанию. Могут использовать расширения .der и .cer, но ничего не мешает дать такому файлу другое широко используемое расширение.

Поэтому для выяснения формата файла следует просмотреть его содержимое или воспользоваться командой file в Linux:

file mycert.cer 

Если сертификат бинарный, то в ответ вы получите:

mycert. cer: data

Все тоже самое справедливо и для закрытого ключа, который чаще всего имеет расширение .key.

Формат PEM

Данный формат наиболее популярен и распространен, особенно в открытом ПО. Представляет кодированный при помощи Base64 формат DER и по сути является обычным текстовым файлом. Характерными особенностями являются обязательные строки, между которыми находится содержимое сертификата или ключа:

-----BEGIN CERTIFICATE-----
Содержимое сертификата Base64 ASCII
-----END CERTIFICATE-----

А команда file определяет такой файл как:

mycert.crt: ASCII text, with CRLF line terminators

Контейнер в формате PEM может содержать один или несколько сертификатов, закрытый ключи или сертификат(ы) и закрытый ключ одновременно. В этом случае каждый из них обрамляется обязательными строками BEGIN и END. Кроме расширения .pem могут также использоваться .cer, . crt и .key для ключа. Поэтому определять формат следует по типу содержимого.

Формат PKCS #7

Специальный контейнер, предназначенный для хранения сертификатов и/или списков отзыва (CRL), может иметь расширения .p7b или .p7c. Важной особенностью является то, что данный формат не предназначен для хранения закрытого ключа и используется только для сертификатов. Чаще всего используется в Windows системах.

Может иметь как DER, так и PEM формат, в последнем случае файл имеет обязательные строки:

-----BEGIN PKCS7-----
Содержимое Base64 ASCII
-----END PKCS7-----

Данный контейнер в основном определяется по расширению, а его внутренний формат по содержимому.

Формат PKCS #12

Данный формат предназначен для хранения закрытого ключа и сертификата, кроме них может содержать полную цепочку доверия и список отзыва. Часто используется для распространения и хранения ключевой пары. Наибольшее распространение имеет в Windows системах и является дальнейшим развитием контейнера PFX от Microsoft, в настоящий момент эти аббревиатуры употребляются как синонимы.

Имеет бинарный формат и защищен паролем (можно оставить пустой пароль), определяется по расширениям .pfx, .p12, .pkcs12.

Преобразование форматов

Для всех дальнейших действий мы будем использовать OpenSSL на платформе Linux, для работы в среде Windows вам потребуется несколько изменить синтаксис в части определения путей. Все команды выполняются от имени того пользователя, который является владельцем сертификата. Также помним, что форматом по умолчанию для OpenSSL является PEM.

PEM в DER

Для преобразования сертификата из PEM в DER выполните:

openssl x509 -in cert.pem -out cert.der -outform DER

Для закрытого ключа:

openssl rsa -in privkey.pem -out privkey.der -outform DER

Для получения нужного результата мы явно указываем выходной формат — DER.

DER в PEM

Синтаксис команд схож, для сертификата:

openssl x509 -inform DER -in cert.der -out cert.pem

Для закрытого ключа:

openssl rsa -inform DER -in privkey. der -out privkey.pem

Обратите внимание, что в данной команде мы, наоборот, явно указываем входной формат.

PEM в PKCS #7

Для примера объединим два сертификата: собственно наш сертификат и сертификат удостоверяющего центра.

openssl crl2pkcs7 -nocrl -certfile cert.pem -certfile cacert.pem -out cert.p7c

Ключ -nocrl указывает, что мы не включаем в контейнер список отзыва. Каждый включаемый в контейнер сертификат задается отдельной опцией -certfile.

Для создания контейнера с CRL используем команду:

openssl crl2pkcs7 -in crl.pem -certfile cert.pem -certfile cacert.pem -out cert.p7c

Так как мы не указывали ни входной, ни выходной форматы, то на входе используем сертификаты формата PEM и получаем контейнер с тем же форматом. Для получения файла в формате DER укажите:

openssl crl2pkcs7 -nocrl -certfile cert.pem -certfile cacert.pem -out cert.p7c -outform DER

Преобразовать сертификаты в формате DER сразу в PKCS #7 нельзя, их следует сначала преобразовать в формат PEM.

PEM в PKCS #12

Создадим контейнер, в который поместим собственно ключевую пару и дополнительный сертификат CA:

openssl pkcs12 -export -in cert.pem -inkey privkey.pem -certfile cacert.pem -out cert.p12

В ключе -in указываем сертификат, связанный с закрытым ключом, в -inkey — закрытый ключ, затем добавляем нужное количество опций -certfile для включения дополнительных сертификатов, которые будут формировать цепочку доверия.

PKCS #7 в PEM

Мы можем вывести все сертификаты файла PKCS #7 в PEM командой:

openssl pkcs7 -print_certs -in cert3.p7b -out certs.pem

Если исходный файл в формате DER, то добавьте:

openssl pkcs7 -print_certs -inform DER -in cert3.p7b -out certs.pem

Напоминаем, что определять формат PKCS #7 следует по содержимому.

PKCS #12 в PEM

Данный контейнер может содержать как ключевую пару, так и дополнительные сертификаты, чтобы вывести их все в формат PEM используйте команду:

openssl pkcs12 -in cert. p12 -out certs.pem -nodes

Последний ключ -nodes указывает на то, что не нужно шифровать закрытый ключ.

Но что, если нам нужно получить только отдельные части контейнера? Ничего сложного.

Для вывода только сертификата и закрытого ключа используйте:

openssl pkcs12 -in cert.p12 -clcerts -out certs.pem -nodes

Только сертификата:

openssl pkcs12 -in cert.p12 -clcerts -out cert.pem -nodes -nokeys

Так как мы не извлекаем ключ, то опция -nodes как бы не нужна, но она подавляет появления запроса на пароль для экспортируемого файла.

Для вывода только сертификата(ов) CA:

openssl pkcs12 -in cert.p12 -cacerts -out cacert.pem -nodes -nokeys

Только закрытого ключа:

openssl pkcs12 -in cert.p12 -out privkey.pem -nodes -nocerts

Как видим, при помощи OpenSSL не составляет никакого труда разобрать контейнер PKCS #12 на составляющие.

Установить / снять пароль с закрытого ключа

Еще одна часто встречающаяся задача: снять пароль с закрытого ключа, для этого используйте команду:

openssl rsa -in privkey. key -out privkey-nopass.key

Обратная операция выполняется командой:

openssl rsa -des3 -in privkey.key -out privkey-pass.key

Где -des3 указывает на алгоритм шифрования, допустимы значения: -aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea. Перед их использованием следует уточнить, какие именно из них поддерживает тот софт, с которым вы собираетесь использовать ключ.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Конвертация различных форматов сертификатов в требуемый

  WEB-приложение Сведение отчетности  (24.06.2023)

(одним файлом)  (cсылка) 

Для корректного использования сертификатов в текущем сервисе требуется, чтобы сертификаты были в формате PEM (закодированными в Base64 кодировке), аналогично формату, использующемуся в Apache.

Также необходимо, чтобы сертификаты хранились каждый в своем файле, т.е.

Рассмотрим наиболее часто встречаемые форматы и способы конвертации каждого из них в PEM формат.

Формат PEM.

Это целевой формат, в который нужно сконвертировать свои сертификаты, в случае если они находятся в других форматах.
Данные сертификата закодированы в Base64 формате. При открытии файлов данного типа в текстовом редакторе можно увидеть строки «BEGIN CERTIFICATE» для сертификатов, и «BEGIN RSA PRIVATE KEY» или «BEGIN PRIVATE KEY» для приватных ключей.


Обычно файлы имеют раширение.pem,.crt,.cer или.key.

Формат DER.

Это бинарная форма PEM формата. При открытии файлов данного типа в текстовом редакторе, строки BEGIN и END отсутствуют.
Обычно файлы имеют расширение.der или.cer.

Конвертация из DER в PEM :

1openssl x509 -inform der -in c:\cert.der -out c:\cert.pem 

Формат PKCS#7 или P7B.

Данные сертификата обычно закодированы в формате Base64, и он не может содержать приватных ключей. При открытии файлов данного типа в текстовом редакторе можно увидеть строки «BEGIN PKCS7» и «END PKCS7».
Обычно файлы имеют расширение.p7b или.p7c.

Конвертация из P7B в PEM :

1openssl pkcs7 -print_certs -in c:\cert.p7b -out c:\cert.pem

Важно!

После вышеуказанной конвертации в выходном файле будут находится все сертификаты — как сертификат домена, так и сертификат(ы) центра. Для их использования в текущем сервисе необходимо их разделить на отдельные файлы.

В случае затруднения в разделении на отдельные файлы, возможно, будет проще сконвертировать полученный на предыдущем шаге PEM файл и имеющийся приватный ключ (в PEM формате) в PFX формат, который затем сконвертировать в PEM формат, с разделением на отдельные файлы:

Конвертация из PEM в PFX :

1openssl pkcs12 -export -out c:\cert.pfx -inkey c:\cert.key.pem -in c:\cert.pem

Где:

  • c:\cert.pem — это выходной файл, полученный после конвертации из P7B в PEM, и содержащий как сертификат домена, так и сертификат(ы) центра сертификации
  • c:\cert.key.pem — это приватный ключ (в PEM формате)
  • c:\cert.pfx — это итоговый выходной PFX файл, который в дальнейшем можно конвертировать в PEM с разделением на отдельные файлы (см. пункт конвертация из PFX в PEM)

Формат PKCS#12 или PFX

.

Данные представлены в бинарной форме. Это файл контейнер который содержит все сертификаты — сертификат(ы) центра сертификации, сертификат домена и его приватный ключ.
Обычно файлы имеют расширение.pfx или.p12.

Конвертация из PFX в PEM :

  • Экспорт сертификата(ов) центра сертификации:
    1openssl pkcs12 -export -out c:\cert.pfx -inkey c:\cert.key.pem -in c:\cert.pem
        
  • Экспорт сертификата домена:
    1openssl pkcs12 -in c:\cert.pfx -out c:\cert.pem -nodes -nokeys -clcerts
        
  • Экспорт приватного ключа:
    1openssl pkcs12 -in c:\cert.pfx -out c:\cert.key.pem -nodes -nocerts

Назначение, удаление или изменение пароля приватного ключа :

1openssl rsa -des3 -in c:\old_cert.key.pem -out c:\new_cert.key.pem -passin pass:old_password -passout pass:new_password

Для удаления пароля не указывайте параметр passout. В случае если исходный файл без пароля, то не указывайте параметр passin.

Как преобразовать сертификат .

cer в .pem?

спросил

Изменено 1 месяц назад

Просмотрено 727 тысяч раз

У меня есть сертификат .cer , и я хочу преобразовать его в формат .pem .

Если я правильно помню, раньше я мог конвертировать их, экспортируя .cer в Base64, затем переименовав файл в .pem .

Как преобразовать сертификат .cer в сертификат .pem ?

  • ssl-сертификат
  • convert

Преобразование файла DER (.crt .cer .der) в PEM

 openssl x509 -inform der -in certificate.cer -out certificate.pem
 

Источник

3

преобразовать файл .cer в .pem

открыть терминал и выполнить следующую команду

openssl x509 -inform der -in certificate. cer -outform pem -out certificate.pem

Где certificate.cer — исходный файл сертификата, который вы хотите преобразовать, а certificate.pem — имя преобразованного сертификата.

Если openssl недоступен в вашей системе, вы можете преобразовать сертификаты с помощью java keytool .

Однако сначала необходимо создать хранилище ключей Java (JKS). Затем сертификаты можно импортировать и экспортировать в различных форматах.

 keytool -genkey -alias test -keystore <файл хранилища ключей>
keytool -delete -alias test -keystore <файл хранилища ключей>

Преобразование из DER в PEM:

 keytool -import -trustcacerts -alias test -file <файл сертификата der> -keystore test.keystore
keytool -exportcert -alias test -file <файл сертификата pem> -rfc -keystore test.keystore
 

В этом сообщении блога подробно объясняется, как преобразовывать форматы сертификатов

2

Ответ

  • Если ваш сертификат экспортируется с кодировкой DER , используйте принятый ответ:

     openssl x509 -inform der -in certificate. cer -out certificate.pem
     
  • Если ваш сертификат экспортируется с кодировкой Base-64 , измените расширение файла с .cer на .pem , поскольку файл уже имеет формат .pem .

Как сказать, что ваш

.cer файл в формате .pem ?

См. этот ответ stack-o, приведенный здесь:

Файл сертификата формата .pem , скорее всего, будет доступен для чтения в формате ASCII. Он будет иметь строку, начинающуюся с:
-----BEGIN CERTIFICATE-----
…за которой закодированные в Base-64 данные , за которыми следует
-----END CERTIFICATE -----
в конце. До или после могут быть другие строки.

Например, .pem сертификат (сокращенный):

 -----НАЧАТЬ СЕРТИФИКАТ-----
MIIG6DCCBNCgAwIBAgITMgAAGCeh8HZoCVDcnwAAAAAYJzANBgkqhkiG9w0BAQsF
ADBAMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxEzARBgoJkiaJk/IsZAEZFgNkb3Ix
EjAQBgNVBAMTCURPUi1TVUJDQTAeFw0yMDA1MDExNTI0MTJaFw0yMjA1MDExNTI0
MTJaMBYxFDASBgNVBAMTC3dwZG9yd2VibDE2MIIBIjANBgkqhkiG9w0BAQEFAAOC
. ..
-----КОНЕЦ СЕРТИФИКАТА-----
 

Мы не должны забывать, что Windows может сделать это изначально:

 certutil.exe -encode  
 

и в обратном направлении:

 certutil.exe -decode <файл pem> <файл der>
 

Работает с сертификатами и запросами PKCS#10.

У меня сработало простое изменение расширения файла:

mv имя_файла.cer имя_файла.pem

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Сертификат

. Почему этот файл PEM недействителен?

Задавать вопрос

спросил

Изменено 2 года, 4 месяца назад

Просмотрено 3к раз

У меня есть файл chain.pem , который содержит два сертификата в кодировке PEM, первый из которых является сертификатом TSA, а второй — самоподписанным CA.

содержимое файла точно:

 -----НАЧАТЬ СЕРТИФИКАТ-----
MIIIATCCBemgAwIBAgIJAMHphhYNqOmCMA0GCSqGSIb3DQEBDQUAMIGVMREwDwYD
VQQKEwhGcmVlIFRTQTEQMA4GA1UECxMHUm9vdCBDQTEYMBYGA1UEAxMPd3d3LmZy
ZWV0c2Eub3JnMSIwIAYJKoZIhvcNAQkBFhNidXNpbGV6YXNAZ21haWwuY29tMRIw
EAYDVQQHEwlXdWVyemJ1cmcxDzANBgNVBAgTBkJheWVybjELMAkGA1UEBhMCREUw
HhcNMTYwMzEzMDE1NzM5WhcNMjYwMzExMDE1NzM5WjCCAQkxETAPBgNVBAoTCEZy
ZWUgVFNBMQwwCgYDVQQLEwNUU0ExdjB0BgNVBA0TbVRoaXMgY2VydGlmaWNhdGUg
ZGlnaXRhbGx5IHNpZ25zIGRvY3VtZW50cyBhbmQgdGltZSBzdGFtcCByZXF1ZXN0
cyBtYWRlIHVzaW5nIHRoZSBmcmVldHNhLm9yZyBvbmxpbmUgc2VydmljZXMxGDAW
BgNVBAMTD3d3dy5mcmVldHNhLm9yZzEiMCAGCSqGSIb3DQEJARYTYnVzaWxlemFz
QGdtYWlsLmNvbTESMBAGA1UEBxMJV3VlcnpidXJnMQswCQYDVQQGEwJERTEPMA0G
A1UECBMGQmF5ZXJuMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtZEE
jE5IbzTp3Ahif8I3UWIjaYS4LLEwvv9RfPw4+EvOXGWodNqyYhrgvOfjNWPg7ek0
/V+IIxWfB4SICCJ0YMHtiCYXBvQoEzQ1nfu4G9E1P8F5YQrxqMjIZdwA6iOzqJvm
vQO6hansgn1gVlkF4i1qWE7ROArhUCgM7jl+mKAS84BGQAeGJEO8B3y5X0Ia8xcS
2Wg8223/uvPIululZq5SPUWdYXc0bU2EDieIa3wBxbiQ14ouJ7uo3S+aKBLhV9Yv
khxlliVIBp3Nt9Bt4YHeDpVw1m+HIgzii2KKtVkG8+4MIQ9wUej0hYr4uaktCeRq
8tnLpb/PrRaM32BEkaSwZgOxFMr3Ax8GXn7u+lPFdfNJDAWdLjLdx2rE1MTHEGg7
l/0b5ZG8YQVRhtiPmgORswe2+R7ZVNqjb5rNah5Uqi5K3xdGS1TbGNu2/+MAgCRl
RzcENs5Od7rl3m/g8/nW5/++tGHnlOkvsJUfiq5hpBLM6bIQdGNci+MnrhoPa0pk
brD4RjvGO/hFUwQ10Z6AJRHsn2bDSWlS2L7LabCqTUxB9gUV/n3LuJMZzdpZumrq
S+POrnGOb8tszX25/FC7FbEvNmWwqjByicLm3UsRHOSLotnv21prmlBgaTNPs09v
x64zDws0IIqsgN8yZv3ZBGWHa6LLiY2VBTFbbnsCAwEAAaOCAdswggHXMAkGA1Ud
EwQCMAAwHQYDVR0OBBYEFG52C3tOT5zhYMPtLOknoqKUs3c3MB8GA1UdIwQYMBaA
FPpVDYw0ZlFDTPfns6dsla965qSXMAsGA1UdDwQEAwIGwDAWBgNVHSUBAf8EDDAK
BggrBgEFBQcDCDBjBggrBgEFBQcBAQRXMFUwKgYIKwYBBQUHMAKGHmh0dHA6Ly93
d3cuZnJlZXRzYS5vcmcvdHNhLmNydDanBggrBgEFBQcwAYYbaHR0cDovL3d3dy5m
cmVldHNhLm9yZzoyNTYwMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuZnJl
ZXRzYS5vcmcvY3JsL3Jvb3RfY2EuY3JsMIHGBgNVHSAEgb4wgbswgbgGAQAwgbIw
MwYIKwYBBQUHageWJ2h0dHA6Ly93d3cuZnJlZXRzYS5vcmcvZnJlZXRzYV9jcHMu
aHRtbDayBggrBgEFBQcCARYmaHR0cDovL3d3dy5mcmVldHNhLm9yZy9mcmVldHNh
X2Nwcy5wZGYwRwYIKwYBBQUHAgIwOxo5RnJlZVRTQSB0cnVzdGVkIHRpbWVzdGFT
cGluZyBTb2Z0d2FyZSBhcyBhIFNlcnZpY2UgKFNhYVMpMA0GCSqGSIb3DQEBDQUA
A4ICAQClyUTixvrAoU2TCn/QoLFytB/BSDw+lXxoorzZuXZPGpUBYf1yRy1Bpe7S
d3hiA7VCIkD7OibN4XYIe2+xAR30zBniVxqkoFEQlmXpTEb1C9Kt7mrEE34lGyWj
наваRRUV2P+eByCejsILeHT34aDt58AJN/6EozT4syZc7S2O2d9hOWWDZ3/rOCwe
47I+bqXwXfMN57n4kAXSUmb2EvOci09tq6bXv7rBljK5Bjcyn1Km8GahDkPqqB+E
mmxf4/6LXqIydfaH8gUuUC6mwwdipmjM4Hhx3Y6X4xW7qSniVYmXegoxLOlsUQax
Q3x3nys2GxgoiPPuiiNDdPoGPpVhkmJ/fEMQc5ZdEmCSjroAnoA0Ka4yTPlvBCNU
83vKWv3cefeTRqs4i/x58B3JhhJU6mzBKZQQdrg9IFVvO+UTJoN/KHb3gzs3Dnw9
QQUjgn1PU0AMciGNdSKf8QxviJOpo6HAxCu0yJjBPfQcf2VztPxWUVlxphCnsNKF
fIIlqfsgTqzsouiXGqGvh5hqKuPHL+CgquhCmAp3vvFrkhFUWAkNmCtZRmA3ZOda
CtPRFFS5mG9ni5q2r+hJcDOuOr/U60O3vJ3uaIFZSeZIFYKoLnhSd/IoIQfv45Ag
DgUIrLjqguolBSdvPJ2io9O0rTi7+IQr2jb8JEgph2WNwC3R4A==
-----КОНЕЦ СЕРТИФИКАТА-----
-----НАЧАТЬ СЕРТИФИКАТ-----
MIIH/zCCBeegAwIBAgIJAMHphhYNqOmAMA0GCSqGSIb3DQEBDQUAMIGVMREwDwYD
VQQKEwhGcmVlIFRTQTEQMA4GA1UECxMHUm9vdCBDQTEYMBYGA1UEAxMPd3d3LmZy
ZWV0c2Eub3JnMSIwIAYJKoZIhvcNAQkBFhNidXNpbGV6YXNAZ21haWwuY29tMRIw
EAYDVQQHEwlXdWVyemJ1cmcxDzANBgNVBAgTBkJheWVybjELMAkGA1UEBhMCREUw
HhcNMTYwMzEzMDE1MjEzWhcNNDEwMzA3MDE1MjEzWjCBlTERMA8GA1UEChMIRnJl
ZSBUU0ExEDAOBgNVBAsTB1Jvb3QgQ0ExGDAWBgNVBAMTD3d3dy5mcmVldHNhLm9y
ZzEiMCAGCSqGSIb3DQEJARYTYnVzaWxlemFzQGdtYWlsLmNvbTESMBAGA1UEBxMJ
V3VlcnpidXJnMQ8wDQYDVQQIEwZCYXllcm4xCzAJBgNVBAYTAkRFMIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgeAtgKODjAy8REQ2WTNqUudAnjhlCrpE6ql
mQfNppeTmVvZrh5zutn+NwTaHAGpjSGv4/WRpZ1wZ3BRZ5mPUBZyLgq0YrIfQ5Fx
0s/MRZPzc1r3lKWrMR9sAQx4mN4z11xFEO529L0dFJjPF9MD8Gpd2feWzGyptlel
b+PqT+++fOa2oY0+NaMM7l/xcNHPOaMz0/2olk0i22hbKeVhvokPCqhFhzsuhKsm
q4Of/o+t6dI7sx5h0nPMm4gGSRhfq+z6BTRgCrqQG2FOLoVFgt6iIm/BnNffUr7V
DYd3zZmIwFOj/h4DKHoGik/xK3E82YA2ZulVOFRW/zj4ApjPa5OFbpIkd0pmzxzd
EcL479hSA9dFiyVmSxPtY5ze1P+BE9bMU1PScpRzw8MHFXxyKqW13Qv7LWw4sbk3
SciB7GACbQiVGzgkvXG6y85HOuvWNvC5GLSiyP9GlPB0V68tbxz4JVTRdw/Xn/XT
FNzRBM3cq8lBOAVt/PAX5+uFcv1S9wFE8YjaBfWCP1jdBil+c4e+0tdywT2oJmYB
BF/kEt1wmGwMmHunNEuQNzh2FtJY54hbUfiWi38mASE7xMtMhfj/C4SvapiDN837
gYaPfs8x3KZxbX7C3YAsFnJinlwAUss1fdKar8Q/YVs7H/nU4c4Ixxxz4f67fcVq
M2ITKentbCMCAwEAAaOCAk4wggJKMAwGA1UdEwQFMAMBAf8wDgYDVR0PAQH/BAQD
AgHGMB0GA1UdDgQWBBT6VQ2MNGZRQ0z357OnbJWveuaklzCBygYDVR0jBIHCMIG/
gBT6VQ2MNGZRQ0z357OnbJWveuakl6GBm6SBmDCBlTERMA8GA1UEChMIRnJlZSBU
U0ExEDAOBgNVBAsTB1Jvb3QgQ0ExGDAWBgNVBAMTD3d3dy5mcmVldHNhLm9yZzEi
MCAGCSqGSIb3DQEJARYTYnVzaWxlemFzQGdtYWlsLmNvbTESMBAGA1UEBxMJV3Vl
cnpidXJnMQ8wDQYDVQQIEwZCYXllcm4xCzAJBgNVBAYTAkRFggkAwemGFg2o6YAw
MwYDVR0fBCwwKjAooCagJIYiaHR0cDovL3d3dy5mcmVldHNhLm9yZy9yb290X2Nh
LmNybDCBzwYDVR0gBIHHMIHEMIHBBgorBgEEAYHyJAEBMIGyMDMGCCsGAQUFBwIB
ФидодHRwOi8vd3d3LmZyZWV0c2Eub3JnL2ZyZWV0c2FfY3BzLmh0bWwwMgYIKwYB
BQUHageWJmh0dHA6Ly93d3cuZnJlZXRzYS5vcmcvZnJlZXRzYV9jcHMucGRmMEcG
CCsGAQUFBwICMDsaOUZyZWVUU0EgdHJ1c3RlZCB0aW1lc3RhbXBpbmcgU29mdHdh
cmUgYXMgYSBTZXJ2aWNlIChTYWFTKTA3BggrBgEFBQcBAQQrMCKwJwYIKwYBBQUH
MAGGG2h0dHA6Ly93d3cuZnJlZXRzYS5vcmc6MjU2MDANBgkqhkiG9w0BAQ0FAAOC
AgEAaK9+v5OFYu9M6ztYC+L69sw1omdyli89lZAfpWMMh9CRmJhM6KBqM/ipwoLt
nxyxGsbCPhcQjuTvzm+ylN6VwTMmIlVyVSLKYZcdSjt/eCUN+41K7sD7GVmxZBAF
ILnBDmTGJmLkrU0KuuIpj8lI/E6Z6NnmuP2+RAQSHsfBQi6sssnXMo4HOW5gtPO7
gDrUpVXID++1P4XndkoKn7Svw5n0zS9fv1hxBcYIHPPQUze2u30bAQt0n0iIyRLz
aWuhtpAtd7ffwEbASgzB7E+NGF4tpV37e8KiA2xiGSRqT5ndu28fgpOY87gD3ArZ
DctZvvTCfHdAS5kEO3gnGGeZEVLDmfEsv8TGJa3AljVa5E40IQDsUXpQLi8G+UC4
1DWZu8EVT4rnYaCw1VX7ShOR1PNCCvjb8S8tfdudd9zhU3gEB0rxdeTy1tVbNLXW
99y90xcwr1ZIDUwM/xQ/noO8FRhm0LoPC73Ef+J4ZBdrvWwauF3zJe33d4ibxEcb
8/pz5WzFkeixYM2nsHhqHsBKw7JPouKNXRnl5IAE1eFmqDyC7G/VT7OF669xM6hb
Ut5G21JE4cNK6NNucS+fzg1JPX0+3VhsYZjj7D5uljRvQXrJ8iHgr/M6j2oLHvTA
I2MLdq2qjZFDOCXsxBxJpbmLGBx9ow6ZerlUxzws2AWv2pk=
-----КОНЕЦ СЕРТИФИКАТА-----
 

Если я попытаюсь загрузить это с помощью openssl, я получу следующую ошибку:

 $ openssl pkcs7 -inform pem -in chain. pem -text
не удалось загрузить объект PKCS7
372716: ошибка: 0D0680A8: процедуры кодирования asn1: asn1_check_tlen: неверный тег:../openssl-1.1.1i/crypto/asn1/tasn_dec.c:1149:
372716: ошибка: 0D06C03A: процедуры кодирования asn1: asn1_d2i_ex_primitive: вложенная ошибка asn1:../openssl-1.1.1i/crypto/asn1/tasn_dec.c:713:
372716: ошибка: 0D08303A: процедуры кодирования asn1: asn1_template_noexp_d2i: вложенная ошибка asn1:../openssl-1.1.1i/crypto/asn1/tasn_dec.c:646:поле=тип, тип=PKCS7
372716: ошибка: 0906700D: Подпрограммы PEM: PEM_ASN1_read_bio: ASN1 lib:../openssl-1.1.1i/crypto/pem/pem_oth.c:33:
 

Я проверил ответы в этом https://stackoverflow.com/questions/45048858/pem-routinespem-read-biobad-end-line, но кажется, что верхние и нижние колонтитулы правильные — так что же не так с этим файлом сертификата ?

  • сертификат
  • openssl

Вы используете неправильную команду

Вы используете команду OpenSSL pkcs7 . PKCS 7 — это специальный формат для хранения данных. В PEM, PKCS 7 может обычно распознается через заголовок -----BEGIN PKCS7----- . В Windows будет использоваться формат файла .p7b .

Однако сертификаты, которые вы представляете, не в формате PKCS 7, это сертификаты x.509 в кодировке PEM. Таким образом, следующая команда напечатает правильную информацию:

 openssl x509 -in chain.pem -text
 

Следует отметить, что эта команда напечатает только первый обнаруженный сертификат, а не оба.

0

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.