У меня есть сертификат с закрытым ключом PFX (PKCS#12). Пароль тоже имеется. Задача, вытащить из файла сертификат и ключ в PEM формате.
Будем работать в Windows 10 с помощью подсистемы Linux. У нас есть:
- Сертификат, example.pfx.
- Пароль.
Включаем bash в Windows:
На диске C создаём папку C:\keys\pfx, переносим туда все нужные файлы:
Запускаем bash. Для запуска bash нужно выполнить команду "bash" или "bash.exe".
Проверим что пакет openssl установлен:
sudo dpkg -l | grep openssl
Если не установлен, то пакет ставится через apt-get:
sudo apt-get install openssl
У меня openssl уже стоит, Переходим в папку /mnt/c/keys/pfx/
cd /mnt/c/keys/pfx/
Сначала вытащим файл сертификата, сохраняем его как example_cert.pem. Выполняем запрос:
openssl pkcs12 -in example.pfx -clcerts -nokeys -out example_cert.pem
Потребуется указать пароль. Получаем файл сертификата example_cert.pem.
Извлекаем закрытую часть сертификата — запароленный ключ. Сохраняем его как example_key_encrypted.key. Выполняем запрос:
openssl pkcs12 -in example.pfx -nocerts -out example_key_encrypted.key
Потребуется указать пароль. Затем два раза ввести новый пароль для закрытого ключа. Получаем запароленный файл ключа example_key_encrypted.key.
Если требуется ключ без пароля, например, для публикации в Apache или Nginx, то снимаем пароль, сохраняем файл как example_key.pem. Выполняем запрос:
openssl rsa -in example_key_encrypted.key -out example_key.pem
Получаем файл ключа example_key.pem.
Обратная задача
Windows — конвертация SSL сертификата PEM в формат PFX (PKCS#12) с помощью подсистемы Linux