Разделение PFX файла на отдельные файлы с закрытым и открытым ключом

Далеко не все системы умеют работать с PFX файлами. Особенно это касается *nix систем. Но это даже не недостаток, а просто особенность работы этих систем. Поэтому разделение PFX файла на отдельные файлы с закрытым и открытым ключом (PEM формат) не такая уж и редкая задача. Коснулась она и меня, поэтому, чтобы у меня всегда была шпаргалка под рукой я и решил написать эту статью.

Если у вас стоит обратная задача – конвертирование файла с открытым ключом и закрытым ключом в PFX, то я уже рассказывал как это делается.

Необходимый инструмент (openssl)

оздание PFX сертификата а из PEM сертификата штатными средствами Windows “из коробки” не поддерживается. Соответственно, мы будем использовать сторонее решение – OpenSSL for Windows.

Если вы работаете в *nix системах, т, вероятно, openssl у вас уже установлен.

Переходим по указанной выше ссылки и загружаем дистрибутив программного продукта:

Копия дистрибутива от 03.09.2021 доступна ниже:

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

Разделение PFX файла

Очень кратко покажу что нам нужно сделать (это же все-таки шпаргалка):

1. Сначала извлекем файл закрытого ключа. Обязательно указывыаем пароль для PEM файла.

openssl pkcs12 -in <pfx_file> -nocerts -out <encrypted_key_file>

Пример:

openssl pkcs12 -in _.itproblog.ru.pfx -nocerts -out itproblog.key
roman@mintwks:~$ openssl pkcs12 -in _.itproblog.ru.pfx -nocerts -out itproblog.key
Enter Import Password:
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
roman@mintwks:~$ 

При возникновении ошибки “digital envelope routines:inner_evp_generic_fetch:unsupported” добавьте ключ -legacy в самом конце команды.

2. Теперь извлекем закрытый ключ из зашифрованного PEM файла:

openssl rsa -in <encrypted_key_file> -out <unencrypted_key_file>

Пример:

openssl rsa -in itproblog.key -out itproblog_key.key
roman@mintwks:~$ openssl rsa -in itproblog.key -out itproblog_key.key
Enter pass phrase for itproblog.key:
writing RSA key
roman@mintwks:~$

Примерно так выглядит файл закрытого ключа в PEM формате:

3. Теперь переведем в PEM формат файл сертификата (без закрытого ключа).

openssl pkcs12 -in <pfx_file> -clcerts -nokeys -out <crt_file>

Пример:

openssl pkcs12 -in _.itproblog.ru.pfx -clcerts -nokeys -out itproblog.crt
roman@mintwks:~$ openssl pkcs12 -in _.itproblog.ru.pfx -clcerts -nokeys -out itproblog.crt
Enter Import Password:
roman@mintwks:~$

При возникновении ошибки “digital envelope routines:inner_evp_generic_fetch:unsupported” добавьте ключ -legacy в самом конце команды.

Примерно так выглядит файл открытого ключа в PEM формате:

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

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