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

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

Существует четыре основных формата сертификатов:

PEM — популярный формат используемый Центрами Сертификации для выписки SSL-сертификатов.

Основные расширения этого типа .pem, .crt, .cer, .key. В файлах содержатся строки вида

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY ------

Сертификаты PEM подходят для установки на веб-серверы nginx, apache2.

DER — это бинарная форма сертификата PEM.

Основные расширения этого типа  сертификата .der .cer

Сертификаты DER подходят для установки на серверы Java.

P7B. Файлы P7B кодируются в формате Base64 и имеют расширение .p7b или .p7c.

В файлах содержатся строки вида

-----BEGIN PKCS7-----
-----END PKCS7-----

Сертификаты P7B подходят для установки на серверы MS Windows, Java Tomcat

PFX — это сертификат в бинарном формате, выданный для домена, включающий в себя сертификат, цепочку сертификатов (корневые сертификаты) и приватный ключ. Имеют расширение .pfx или .p12.

Сертификаты PFX подходят для установки на серверы Windows, в частности Internet Information Services(IIS).

Способы конвертации

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

Конвертация SSl сертификатов посредством OpenSSL

OpenSSL — это надежный, коммерческий и полнофункциональный инструментарий для протоколов Transport Layer Security (TLS) и Secure Sockets Layer (SSL). А также библиотека криптографии общего назначения. Конвертация с использованием библиотеки OpenSSL считается одним из самых безопасных способов: все данные будет сохранены непосредственно на устройстве, на котором будут выполняться операции по конвертированию. 

Для того чтобы воспользоваться им, вам необходимо перейти в командную строку и выполнить команды. 

Предоставленные ниже примеры команд OpenSSL позволяют конвертировать сертификаты и ключи в нужный формат.

Конвертировать PEM в DER можно посредством команды:

openssl x509 -outform der -in site.crt -out site.der

Аналогично, для других типов:

PEM в P7B

openssl crl2pkcs7 -nocrl -certfile site.crt -out site.p7b -certfile site.ca-bundle

PEM в PFX

openssl pkcs12 -export -out site.pfx -inkey site.key -in site.crt -certfile site.ca-bundle

Обращаем ваше внимание, что после выполнения команды, будет запрошена установка пароля ключа.

DER в PEM

openssl x509 -inform der -in site.der -out site.crt

P7B в PEM

openssl pkcs7 -print_certs -in site.p7b -out site.cer

P7B в PFX

openssl pkcs7 -print_certs -in site.p7b -out certificate.ceropenssl pkcs12 -export -in site.cer -inkey site.key -out site.pfx -certfile site.ca-bundle

PFX в PEM

openssl pkcs12 -in site.pfx -out site.crt -nodes

Конвертация при помощи онлайн-сервисов

Для конвертации сертификатов самый удобный способ — использование специальных сайтов. Этот способ считается наименее безопасным методом: никогда не знаешь, сохраняет ли автор сайта ваш приватный ключ при конвертации.

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

Для конвертации необходим только файл сертификата .crt, .pem

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

В этом случае существует возможность добавить также цепочку сертификатов.

Что такое цепочка сертификатов и для чего она нужна, можно узнать в статье «Что такое корневой сертификат» 

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

В этом случае необходимо обратить внимание на то, что обязателен ключ сертификата, а также необходимо установить пароль ключа.

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

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

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

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

Конвертация скриптом openssl-ToolKit

OpenSSL ToolKit — скрипт, который облегчает работу с библиотекой OpenSSL. Работа со скриптом является безопасным решением, т.к сертификаты и ключи сертификата никуда не передаются, а используются  непосредственно на вашем сервере.

Для начала работы скрипт необходимо скачать и запустить. Сделать это можно одной командой:

echo https://github.com/tdharris/openssl-toolkit/releases/download/1.1.0/openssl-toolkit-1.1.0.zip \
| xargs wget -qO- -O tmp.zip && unzip -o tmp.zip && rm tmp.zip && ./openssl-toolkit/openssl-toolkit.sh

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

Нас интересует пункт 2. Convert certificates

После перехода в пункт 2. появится следующее меню, с выбором нужного типа конвертирования

После выбора преобразования, в данном случае PEM to FPX, скрипт предложит выбрать директорию с сертификатами на том устройстве, где запускается скрипт.

В нашем случае мы их скачали в директорию /home/ivan/crt/

После корректного ввода директории, скрипт отобразит все файлы в этой директории.

Далее нужно ввести имя сертификата, который будем конвертировать, в нашем случае это site.pem

Обращаю ваше внимание, что для корректной конвертации, с PEM в PFX, необходимо вручную объединить файл сертификата, цепочки и ключа в один файл, иначе будет возникать ошибка конвертации.

Сделать это можно простой командой 

cat site.crt site.ca-bundle site.key > site.pem

Данное действие необходимо только для конвертации из PEM в PFX.

Мы рассмотрели пример конвертации PEM в PFX. Этим же путем можно конвертировать сертификаты в другие форматы. Единственное, что вам уже не понадобится шаг с объединением файлов.

Пример конвертации PEM В DER.