Конвертирование сертификатов при помощи OpenSSL. Что такое Pem-файл и как он отличается от других форматов файлов Open Generated Key? Файл pkcs 12 с расширением pfx

На серверы с операционной системой Windows и на их веб-серверы IIS необходимо устанавливать нестандартные форматы файлов сертификата - .pfx. После выпуска сертификата, приобретенного у нас, вам доступны для скачивания файлы в формате PEM (.crt, .ca-bundle), которых может быть недостаточно для установки на Windows хостинг.

Если взять один зашифрованный файл формата.pfx, в нем хранятся сразу и приватный ключ (.key), и сертификат (.crt), и цепочка сертификатов (.ca-bundle).

Мы расскажем, как из файлов SSL-сертификата получить файлы в формате .pfx .

1. Скачать архив сертификата из SSL панели.

Попасть в SSL-панель можно из Панели клиента на нашем сайте. Перейдите в раздел Мои услуги, нажмите кнопку Детали возле сертификата.

Здесь нажмите Скачать архив с сертификатом.

В архиве вам необходимы:

2. Найти приватный ключ.KEY

При генерации CSR-запроса на Windows сервере, вместе с ним был сгенерирован и сохранен на сервере приватный ключ RSA (.key). Найдите данный файл на сервере. Это необходимо для следующего шага.

Если CSR-запрос генерировался в нашей SSL-панели, мы отправили вам на почту связку ключей CSR-RSA в письме с темой "Your generated CSR and keys" от Скопируйте ключ, начинающийся тэгом -----BEGIN RSA PRIVATE KEY----, создайте на вашем компьютере текстовый документ (например, в Блокнот), вставьте в него ключ и сохраните с расширением.key.

3. Объединить файлы.CRT, .KEY и.CA-BUNDLE

Для того, чтобы это сделать, установите на ваш компьютер программу openssl.exe .

Откройте данную утилиту и введите команду:

pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -certfile domain.name.ca-bundle

domain.key - имя файла с приватным ключом RSA;

domain.crt - имя файла сертификата;

domain.ca-bundle - имя файла цепочки сертификатов.

Если конвертация прошла успешно, вы увидите слово Verifying.

Как только возникает необходимость выполнить конвертирование одного формата сертификата в другой, каждый раз возникает вопрос: "Как это сделать?". Наиболее удобно для этого использовать OpenSSL (), этот сайт содержит исходные коды, если нет желания выполнять компилирование исходных кодов, то можно взять скомпилированный вариант OpenSSL, его можно скачать по ссылке: . Необходимость выполнять конвертирование возникает, если имеющийся формат сертификата не подходит для ПО или оборудования.
Итак, если необходимо выполнить конвертирование одного формата сертификата в другой, то надо скачать и установить OpenSSL на локальном компьютере. Далее, рекомендуется скопировать с папку с OpenSSL имеющиеся файлы сертификата, для которого необходимо выполнить конвертирование, открыть командную строку и перейти в папку с установленным OpenSSL.


Часто используемые форматы сертификатов:
PEM - очень часто используется в Linux based системах или оборудовании, файлы такого формата сертификата используют расширение.cer, .crt, and .pem.
DER - двоичная формат сертификата. DER формат не содержит текста "BEGIN CERTIFICATE/END CERTIFICATE", формат DER чаще всего использует расширение.der
PKCS#7 или P7B - эти форматы сертификата хранятся в формате Base64 ASCII и чаще всего имеют расширения файлов.p7b или.p7c. Файл P7B, кроме самого сертификата содержит цепочку сертификатов (открытых ключей) выпускающих центров сертификации (Intermediate CAs). Этот формат поддерживается в Windows и Java Tomcat.
PKCS#12 или PFX - эти форматы представляют собой двоичный формат для хранения сертификата сервера, промежуточных сертификатов и закрытого ключа в одном зашифрованном файле. Файлы такого формата сертификата используют расширение.pfx and .p12. PFX файлы обычно используются на windows машинах для импорта/экспорта сертификатов и закрытого ключа.


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

Конвертирование x509 в PEM
openssl x509 -in certificate.cer -outform PEM -out certificate.pem
Конвертирование PEM в DER
openssl x509 -outform der -in certificate.pem -out certificate.der
Конвертирование DER в PEM
openssl x509 -inform der -in certificate.der -out certificate.pem
Конвертирование PEM в P7B
openssl crl2pkcs7 -nocrl -certfile certificate.pem -out certificate.p7b -certfile CACert.cer
Конвертирование PKCS7 в PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem
Конвертирование pfx в PEM
openssl pkcs12 -in certificate.pfx -out certificate.pem
Конвертирование PFX в PKCS#8

Step 1: Конвертирование PFX в PEM
openssl pkcs12 -in certificate.pfx -nocerts -nodes -out certificate.pem Step 2: Конвертирование PEM в PKCS8
openSSL pkcs8 -in certificate.pem -topk8 -nocrypt -out certificate.pk8
Конвертирование P7B в PFX
Для этого требуется выполнение двух команд

1. Конвертирование P7B в CER
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer 2. Конвертирование CER и закрытого ключа в PFX
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile cacert.cer

Я отвечаю за поддержку двух серверов Debian. Каждый раз, когда я должен что-либо делать с сертификатами безопасности, я Google для учебных пособий и отбиваю, пока он, наконец, не работает.

Однако в моих поисках я часто сталкиваюсь с разными форматами файлов (.key , .csr , .pem)), но я никогда не было в состоянии найти хорошее объяснение того, какова цель каждого файла.

Мне было интересно, могут ли хорошие люди здесь в ServerFault дать некоторые разъяснения по этому вопросу?

3 ответа

1377

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

  • .csr . Это запрос на подпись сертификата. Некоторые приложения могут генерировать их для отправки в органы сертификации. Фактический формат - PKCS10, который определен в RFC 2986 . Он включает в себя некоторые /все ключевые данные запрашиваемого сертификата, такие как субъект, организация, состояние, еще что-то, а также открытый ключ сертификата для подписки. Они получают подписанный CA и сертификат возвращается. Возвращаемый сертификат является общедоступным сертификатом (который включает открытый ключ, но не закрытый ключ), который сам может быть в нескольких форматах.
  • .pem . Определено в RFC через , это формат контейнера, который может включать только открытый сертификат (например, с установками Apache и файлы сертификатов CA /etc/ssl/certs) или может включать целую цепочку сертификатов, включая открытый ключ, закрытый ключ и корневые сертификаты. Смутно, он может также кодировать CSR (например, в качестве ), поскольку формат PKCS10 может быть переведен на PEM. Имя от Privacy Enhanced Mail (PEM) , неудачный метод для защищенной электронной почты, но контейнер, в котором он используется, живет и является базовым преобразованием ключей x509 ASN.1.
  • .key . Это файл в формате PEM, содержащий только закрытый ключ конкретного сертификата, и является просто условным именем, а не стандартизованным. В установках Apache это часто находится в /etc/ssl/private . Права на эти файлы очень важны, и некоторые программы откажутся загружать эти сертификаты, если они установлены неправильно.
  • .pkcs12 .pfx .p12 . Первоначально определяется RSA в стандартах шифрования с открытым ключом (сокращенно PKCS), вариант «12» был первоначально расширен Microsoft, а позже представлен как RFC 7292 . Это парольный формат контейнера, который содержит как открытые, так и частные пары сертификатов. В отличие от файлов.pem, этот контейнер полностью зашифрован. Openssl может превратить это в.pem-файл с открытым и закрытым ключами: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

Несколько других форматов, которые появляются время от времени:

  • .der . Способ кодирования синтаксиса ASN.1 в двоичном файле.pem - это только файл с кодировкой Base64. OpenSSL может преобразовать их в.pem (openssl x509 -inform der -in to-convert.der -out converted.pem). Windows рассматривает их как файлы сертификатов. По умолчанию Windows будет экспортировать сертификаты как файлы формата.DER с другим расширением. Как...
  • .cert .cer .crt . Файл с расширением.pem (или редко.der) с другим расширением, признанным проводником Windows в качестве сертификата, который не является.pem.
  • >
  • .p7b .keystore . Определено в RFC 2315 как PKCS номер 7, это формат, используемый Windows для обмена сертификатами. Java понимает их изначально и часто использует.keystore как расширение. В отличие от сертификатов стиля.pem, этот формат имеет определенный способ включения сертификатов сертификационного пути.
  • .crl - Список отзыва сертификатов. Органы сертификации выражают это как способ отмены авторизации сертификатов до истечения срока действия. Иногда вы можете загружать их с веб-сайтов CA.

Таким образом, существует четыре способа представления сертификатов и их компонентов:

  • PEM - управляемый RFC, он используется преимущественно программным обеспечением с открытым исходным кодом. Он может иметь множество расширений (.pem, .key, .cer, .cert, more)
  • PKCS7 - открытый стандарт, используемый Java и поддерживаемый Windows. Не содержит личный материал.
  • PKCS12 - частный стандарт Microsoft, который позже был определен в RFC, который обеспечивает повышенную безопасность по сравнению с форматом PEM с открытым текстом. Это может содержать секретный ключевой материал. Он используется преимущественно системами Windows и может быть свободно преобразован в формат PEM с помощью openssl.
  • DER - родительский формат PEM. Полезноподумайте об этом как о двоичной версии файла PEM с кодировкой base64. Не всегда используется много за пределами Windows.

Надеюсь, это поможет.

PEM на своем собственном не является сертификатом, это всего лишь способ кодирования данных. Сертификаты X.509 - это один тип данных, который обычно кодируется с использованием PEM.

PEM - это сертификат X.509 (структура которого определена с использованием ASN.1), закодированная с использованием ASR.1 DER (выделенные правила кодирования), затем выполняется через кодировку Base64 и застревает между строками якорных текстовых строк (BEGIN CERTIFICATE и END CERTIFICATE).

Вы можете представлять одни и те же данные с помощью представлений PKCS # 7 или PKCS # 12, и для этого можно использовать служебную программу командной строки openssl.

Очевидными преимуществами PEM является то, что безопасно вставлять в тело сообщения электронной почты, потому что он имеет линии привязки и имеет 7-битную чистоту.

RFC1422 имеет более подробную информацию о стандарте PEM, относящемся к ключам и сертификатам.

При запуске шифрования на сайте, каждый сервер требует отдельный тип файла с сертификатом. Конвертер SSL позволяет быстро и легко заменить файлы 6 форматов — в зависимости от системных требований. Возможные варианты: PEM, DER, PKCS#7, P7B, PKCS#12 и PFX.

Если Ваш сертификат был выдан в формате, который не осблуживается сервером, воспользуйтесь нижеуказанным конвертером:

  • выберите актуальный формат сертификата,
  • выберите формат, на которой Вы хотите изменить,
  • загрузите файл с SSL-сертификатом,
  • нажмите кнопку - конвертировать.

Формат PEM

Самый популярный формат используемый Центрами Сертификации для выписки SSL -сертификатов. В этом формате может выдаваться так же промежуточный или главный CA. Этот тип распознаётся после расширений файла: .pem , .crt , .cer или .key (в файлах содержатся линии BEGIN и END сертификата, ключа и т.д.). Он закодирован в формате Base64.

PEM компатибильный с серверами Apache и подобными. Во время инсталяции большинство серверов требуют отдельные файлы – сертификат(ы) не могут быть соединены с приватным ключём и т.д.

Формат DER

Это бинарная форма PEM. Файлы с этим форматом сертификата могут иметь окончание .der или .cer.

DER в основном используется для установки на серверахJava . Конвертер позволяет изменять сертификат в формат типа.der, для преобразования ключа необходимо использовать команду OpenSSL .

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

Эти файлы обычно кодируются в формате Base64 и имеют окончание .p7b или .p7c . Файлы P7B содержат линии "-----BEGIN PKCS7-----" и "-----END PKCS7-----". В этом формате нету приватных ключей.

PKCS#7 и P7B используются для инсталяции м.п. на серверах Microsoft Windows и Java Tomcat .

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

Это бинарный формат, в котором находится сертификат, выданый для домена (интернет-страницы), промежуточные сертификаты и приватный ключ. Файлы обычно имеют окончания .pfx или .p12 . Наиболее часто используются для импорта и экспорта сертификатов, а так же приватного ключа на серверах Windows .

Во время изменения формата PFX на PEM, в одном файле будет размещён сертфикат и приватный ключ. С целью их разделения, необходимо открыть файл в текстовом редакторе, скопировать его в отдельные файлы вместе с линиями: BEGIN i END, а затем записать как sertifikat.cer, CA.cer и ключ приватный.key.


Нажмите , чтобы использовать для конвертации команды OpenSSL.

Случайные статьи

Вверх