Преобразования ключей и сертификатов

Форматы

Двоичный (DER) сертификат
Содержит сертификат X.509 в кодировке DER ASN.1.
Сертификат(ы) ASCII (PEM)
Содержит сертификат DER, закодированный в формат Base64, со строкой -----BEGIN CERTIFICATE-----, используемой в заголовке и со строкой -----END CERTIFICATE----- в конце. Обычно в одном файле находится один сертификат, но некоторые програмы позволяют иметь несколько, в зависимости от контекста. Например, веб-сервер Apache требует, чтобы сертификат сервера был единственным в одном файле, а все промежуточные сертификаты вместе в другом файле.
Двоичный (DER) ключ
Содержит закрытый ключ в кодировке DER ASN.1. OpenSSL создаёт ключи в своём собственном формате (SSLeay). Также имеется альтернативный формат, называемый PKCS#8 (описанный в RFC 5208), но он нечасто используется. OpenSSL может конвертировать в и из формата PKCS#8 используя команду pkcs8.
Символьный (PEM) ключ
Содержит двоичный ключ с дополнительными метаданными (например, алгоритм для парольной защиты).
PKCS#7 сертификат(ы)
Комплексный формат, разработанный для передачи подписанных или зашифрованных данных, описанный в RFC 2315. Обычно имеет расширение файла .p7b или .p7c и при необходимости может содержат в себе всю цепочку сертификатов. Этот формат поддерживается утилитой для ключей в Java.
PKCS#12 (PFX) ключ и сертификат(ы)
Комплексный формат, который может содержать закрытый серверный ключ с относящимся к нему сертификатом, а также промежуточными сертификатами. Обычно используется расширение файла .p12 или .pfx. Этот формат обычно используется в продуктах Microsoft. В наши дни имя PFX используется как синоним для PKCS#12, несмотря на то, что PFX когда-то давно ссылался на другой формат (раннюю версию PKCS#12). Но вы вряд ли где-нибудь найдёте эту старую версию.

Преобразование сертификата из PEM в DER

host$ openssl x509 -inform PEM -in ./certificate.pem -outform DER -out ./certificate.der

Преобразование сертификата из DER в PEM

host$ openssl x509 -inform DER -in ./certificate.der -outform PEM -out ./certificate.pem
Расширения файлов .der и .pem тут указаны для наглядности. Можно оставить файлу изначальное расширение .crt или .cer.
Если вам надо конвертировать форматы секретных ключей, то синтаксис тот же, но используются разные команды: rsa для ключей RSA и dsa для ключей DSA.

Преобразование из PEM в PKCS#12

host$ openssl pkcs12 -export -out union.p12 -inkey private.key -in certificate.crt -certfile chain.crt

Преобразование из PKCS#12 в PEM

host$ openssl pkcs12 -in union.p12 -out union.pem -nodes
Полученный файл union.pem будет содержать в себе ключ и все сертификаты. Надо просто открыть этот файл в любом текстовом редакторе и разнести содержимое по отдельным файлам.

Далее

назад