Как из pfx получить cer и key
Перейти к содержимому

Как из pfx получить cer и key

  • автор:

Как из pfx получить cer и key

Если удостоверяющий центр предоставил сертификат в форме PFX-контейнера (формат PKCS#12, файл с расширением PFX или P12), необходимо самостоятельно извлечь из него файлы сертификата и приватного ключа в PEM-кодировке.

Извлечение файлов сертификата и приватного ключа можно выполнить с помощью утилиты openssl. В процессе извлечения файлов потребуется ввести парольную фразу от PFX-контейнера.

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

openssl pkcs12 -in source.pfx -nocerts -nodes -out key.pem

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

openssl pkcs12 -in source.pfx -clcerts -nokeys -out cert.pem

В результате вы получите следующие файлы:

  • key.pem – файл приватного ключа RSA в PEM-кодировке (без парольной фразы);
  • cert.pem – файл сертификата формата X.509 в PEM-кодировке.

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

Как из pfx получить cer и key

ПРОБЛЕМА:
Для подписания и проверки подписи запросов авторизации и полезной нагрузки необходимо использовать отдельные файлы открытых и закрытых ключей. Однако, путём экспорта из локального хранилища сертификатов, можно получить контейнер формата PKCS #12 (файл .pfx) содержащий одновременно и открытый и закрытый ключ.

РЕШЕНИЕ:
Следуя предложенному ниже алгоритму экспортировать ключи в pfx-контейнер, извлечь открытый и закрытый ключи из контейнера и отключить парольную фразу закрытого ключа.

¶ Экспорт сертификата в pfx-контейнер

  1. В Менеджере сертификатов щёлкните нужный сертификат правой кнопкой мыши. Выберите Все задачиЭкспорт

certmgr-certificate-export1.png

certmgr-certificate-export2.png

  1. Выберите Да, экспортировать закрытый ключ и нажмите Далее

certmgr-certificate-export3.png

  1. Выберите Файл обмена личной информацией — PKCS #12 (.PFX), отметьте чек-бокс Экспортировать все расширенные свойства и нажмите Далее

certmgr-certificate-export4.png

  1. Отметьте чек-бокс Пароль, введите дважды пароль для защиты закрытого ключа и нажмите Далее

certmgr-certificate-export5.png

  1. Введите имя файла для экспорта. Нажав Обзор можно выбрать место сохранения файла. Нажмите Далее

certmgr-certificate-export6.png

  1. Нажмите Готово для завершения экспорта

certmgr-certificate-export7.png

Для выполнения следующих шагов требуется утилита openssl. В Linux и MacOS она присутствует по умолчанию. В ОС Windows можно использовать WSL, либо установить Git для Windows. Openssl будет доступна в терминале Git Bash.

¶ Извлечение открытого ключа

openssl pkcs12 -in file_name.pfx -clcerts -nokeys -out file_name.pem 

¶ Извлечение закрытого ключа, защищенного парольной фразой

openssl pkcs12 -in file_name.pfx -nocerts -out file_name.private.key 

¶ Отключение парольной фразы закрытого ключа

openssl rsa -in file_name.private.key -out file_name.key 

file_name.pem — открытый ключ;
file_name.private.key — закрытый ключ, защищенный парольной фразой
file_name.key — закрытый ключ, без парольной фразы

Для ускорения процесса извлечения ключей можно использовать скрипт примерно следующего содержания (при запуске скрипта в качестве параметра передаётся имя файла .pfx):

#!/bin/bash openssl pkcs12 -in $1.pfx -clcerts -nokeys -out $1.pem openssl pkcs12 -in $1.pfx -nocerts -out $1.private.key openssl rsa -in $1.private.key -out $1.key rm -f $1.private.key openssl x509 -noout -serial -in $1.pem 

Вики IT-KB

Как извлечь сертификат и закрытый ключ из PFX-файла с помощью OpenSSL

Бывают ситуации, когда имеется PFX-контейнер, защищённый паролем и нам известен этот пароль. При этом необходимо извлечь из этого PFX-файла данные сертификата и закрытого ключа в формате PEM. Рассмотрим пример того, как выполнить эту задачу с помощью утилиты openssl.

Шаг 1. Извлечение сертификата

Распаковываем сертификат. При выполнении будет запрошен пароль (Import Password), которым защищён PFX контейнер. Вводим пароль.

openssl pkcs12 -in my_ru.pfx -clcerts -nokeys -out my_ru.crt
Enter Import Password: ************ MAC verified OK

Шаг 2. Извлечение закрытого ключа

Распаковываем закрытый ключ. При выполнении будет запрошен пароль (Import Password), которым защищён PFX контейнер. Вводим пароль. Далее будет запрошена новая парольная фраза (PEM pass phrase), которой будут зашифрованы данные закрытого ключа при выгрузке. Два раза вводим парольную фразу защиты закрытого ключа.

openssl pkcs12 -in my_ru.pfx -nocerts -out my_ru_encr.key
Enter Import Password: ************ MAC verified OK Enter PEM pass phrase: ****** Verifying - Enter PEM pass phrase: ******

Шаг 3. Дешифровка закрытого ключа

Выполняем дешифровку закрытого ключа. При запросе вводим парольную фразу (PEM pass phrase), заданную на шаге 2.

openssl rsa -in my_ru_encr.key -out my_ru.key
Enter pass phrase for my_ru_encr.key: ****** writing RSA key

В результате имеем два файла my_ru.crt (сертификат) и my_ru.key (дешифрованный закрытый ключ) в формате PEM, которые можно использовать для настройки разных сервисов, например, для включения SSL на веб-сервере на базе Linux. Файл my_ru_encr.key в большинстве случаев не требуется и может быть удалён.

Проверено на следующих конфигурациях:

Версия OpenSSL
OpenSSL 1.0.2d-fips 9 Jul 2015

Автор первичной редакции:
Алексей Максимов
Время публикации: 14.12.2021 18:24

Как извлечь сертификат и приватный ключ из pfx-файла

До недавнего времени всё у меня на работе было хорошо, разработчики разрабатывали сайты, я приглядывал за серверами. Но в один прекрасный день к нам не пришла беда :(. Как оказалось, компания Google зарегистрировала на себя домен .dev ещё в 2014 году, а после этого в своём браузере Chrome с версии 63 ввела обязательную работу по https-протоколу с сайтами в зоне .dev

И вот, разработчики обновляют свои браузеры Chrome до 63 версии, а сайты для разработки у нас находятся в зоне .dev — и в результате, вся разработка встаёт колом, ибо разработчики не могут обратиться к сайтам. Виндовс-админы сгенерировали для установки сертификат и прислали мне запароленный pfx-файл. Но мне для установки в nginx нужны приватный ключи и сертификат в формате base64. Поэтому, чтобы их извлечь из pfx-файла надо использовать следующие команды:

# openssl pkcs12 -nodes -in dev-with-priv.pfx -nocerts -out private.key
Enter Import Password:
MAC verified OK

Этой командой из pfx-файла извлекается приватный ключ. для извлечения сертификата, надо выполнить следующую команду:

# openssl pkcs12 -nokeys -in dev-with-priv.pfx -out cert.pem
Enter Import Password:
MAC verified OK

В результате, в текущем каталоге на диске будет создано 2 файла: private.key — в нём будет находится приватный ключ и cert.pem — в нём будет находится сертификат. Кстати, с помощью openssl можно также проверить и их содержимое. Для этого надо выполнить следующие команды:

Проверить содержимое и срок действия сертификата:

# openssl x509 -noout -text -in cert.pem

Проверить содержимое запроса на сертификат:

# openssl req -noout -text -in dev.csr

Содержимое и параметры приватного ключа

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *