Заметки: Конвертируем PFX в KEY и CRT

Конвертация PFX в KEY и CRT может потребоваться в том случае, если вы используете какое-либо unix/linux-приложение с поддержкой доступа по SSL. Чаще всего это веб-приложения. В противовес этому подходу Windows использует сертификаты в формате .pfx для хранения закрытого и открытого ключа враз, разумеется с защитой паролем при попытке экспорта.

Регулярно приходится работать с сертификатами и процесс конвертации PFX (PKCS12) в KEY и CRT (PEM) встречается с завидной регулярностью. Которой, тем не менее, не достаточно, чтобы запомнить все нужные команды до автоматизма. Приходится постоянно лезть в маны или гугл за нужными командами. Уже давно пришло время написать статью-шпаргалку. Собственно, вот и она.


Хочется задать вопросы или поделиться знаниями? Приходи в наш закрытый Telegram-чат.


Конвертируем PFX

В статье я рассмотрю лишь базовые сценарии, которые встречаются наиболее часто.

Получаем сертификат

Если у вас все ещё нет сертификата от публичного ЦС, тогда мы идем к вам то самое время его получить. Обычно для этого сначала нужно сделать CSR-запрос. Следующий шаг – отправить его в ЦС и пройти проверку домена/организации (вам отправят письмо с кодом подтверждения на какой-либо админский адрес, либо позвонят на корпоративный номер телефона в зависимости от типа проверки).

Примечание: у меня на блоге вы сможете найти множество статей по сертификатам с помощью тега SSL certificate.

Как только все формальности пройдены, на почту вы получите архив с нужным вам сертификатом в формате .crt (и всей цепочкой промежуточных на всякий случай).

PFX в KEY и CRT

Воспользуемся всем знакомой утилитой openssl, чтобы вытащить открытую часть pfx-сертификата 1:

Нужно будет ввести пароль, который вы указывали при экспорте .pfx-сертификата. Теперь попробуем извлечь закрытую часть сертификата, поместив её в отдельный запароленный файл:

После выполнения команды вам придется ввести не только пароль, который использовался для экспорта .pfx-сертификата, но и желательно новый пароль, необходимый для защиты .key-файла.

Примечание: второй пароль можете и не вводить, но лучше предпринять меры для сохранности ключа, он не должен попасть в посторонние руки.

Далее можно использовать полученные сертификаты для настройки какого-либо сервиса, использующего SSL. Например Apache (в качестве примера кусок конфигурации ниже):

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

На всякий случай установите на файл соответствующие права, чтобы никто кроме вас не имел к нему доступ:

Ну а теперь рассмотрим обратную процедуру.

KEY и CRT в PFX

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

Примечание: если вы генерировали csr-запрос на стороне сервера Windows, то вам придется его завершить, подсунув файл .crt, который вам позже пришлет ваш ЦС. В итоге экспортировать сертификат из оснастки MMC вы сможете именно в формате .pfx. Иной вариант – если csr создавался с помощью утилиты openssl. В этом случае вероятно у вас уже будут crt и key, которые потребуется собрать в pfx.

Собрать crt и key в pfx можно командой:

Как только нажмете Enter, нужно будет ввести пароль от файла закрытого ключа (если этот пароль есть), а также пароль для экспорта в pfx. После этого смело используйте файл на серверах Windows, но не забудьте при импорте отметить ключ экспортируемым (иначе экспортировать ключ потом не получится).

Если вдруг возникают сложности с Linux, то вы всегда можете обратиться ко мне за помощью.

Яндекс.Метрика