Как собрать pfx сертификат
Перейти к содержимому

Как собрать pfx сертификат

  • автор:

Как собрать pfx сертификат

pfx to pem

Добрый день уважаемые читатели, в прошлый раз я вам рассказывал, о том, что такое csr запрос и мы его генерировали на IIS сервере, далее нам его нужно было передать в удостоверяющий центр для выпуска основного сертификата сервера, мы выбрали для этих целей сертификат comodo на 3 года от компании Emaro. Все замечательно, сертификат прислали, но есть одно но, когда вы попытаетесь импортировать сертификат в формате crt в IIS сервере, то получите предложение, только на импорт pfx формата, и если его не, то ошибку, что сертификат не содержит закрытого ключа. Давайте смотреть как это решить.

Для чего нужно преобразование сертификатов

Тут ответ, очень простой, все дело в формате работы с ними у каждой программы, будь то IIS или же Apache сервер. Более подробно про виды сертификатов и их назначение, я вам посоветую прочитать вот эту статью.

Давайте я подробнее покажу как выглядит ошибка импортирования сертификата. Во первых когда вы получаете от comodo ваш архив с сертификатами, то там будет два файла:

  • с расширением .ca-bundle
  • с расширением .crt

crt сертификат comodo

Попытавшись на сервере IIS произвести их импорт вы увидите вот такую картинку.

сертификат не содержит закрытого ключа

И тут нет ничего удивительного, так как это не pfx архив, то в нем нет нужного приватного ключа. Для его получения придется слегка постараться.

Как получить PFX ключ на IIS

нажимаем сочетание клавиш WIN+R и вводим mmc, для вызова оснастки. Я вам уже рассказывал о ее применении и удобстве для системного администратора.

Вызов mmc консоли

Далее вам необходимо через меню «Файл» добавить новую оснастку.

Добавление оснастки сертификаты компьютера

Находим сертификаты и нажимаем кнопку «Добавить»

добавление оснастки сертификаты

В следующем окне выбираем «для учетной записи компьютера»

сертификаты компьютера windows

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

локальное хранилище сертификатов

Далее находим пункт «Запросы заявок на сертификат», тут вы обнаружите ваш запрос, находите его и через правый клик экспортируете его.

Запросы заявок на сертификат

У вас откроется мастер экспорта сертификатов

Мастер экспорта сертификатов

Далее вы выбираете «Да, экспортировать закрытый ключ»

Экспорт закрытого ключа

Ставим галку «Включить по возможности все сертификаты в путь сертификации» и начинаем наш экспорт PFX архива.

Экспорт pfx сертификата

Теперь мастер экспорта, просит вас указать два раза нужный вам пароль, для защиты pfx архива.

задаем пароль на сертификат

Через кнопку обзор, указываем место сохранения вашего файла.

указываем место pfx файла

экспорт pfx

Как видим, все успешно выгружено.

экспортированный pfx файл

Установка OpenSSL для Windows

Теперь нам необходимо наш файл pfx переделать в pem, Pem преобразовать в key:

  • с расширением .ca-bundle
  • с расширением .crt
  • key

Вы получите из этих трех файлов, нужный для импорта pfx архив. Во всем этом нам поможет утилита OpenSSL для Windows.

В итоге у вас будет архив, распакуйте его куда вам будет угодно. Далее выберите вашу папку, зажмите SHIFT и щелкните по ней правым кликом, в открывшемся контекстном меню, выберите пункт «Открыть окно команд».

openssl в windows

В результате чего у вас откроется командная строка Windows, но уже в нужной папке содержащей утилиту openssl.exe, она нам и поможет все сделать красиво.

Преобразование PFX в PEM

Теперь приступаем к получению фала в формате Pem. Положите в папку с дистрибутивом файл в формате pfx.

openssl.exe pkcs12 -in api.pyatilistnik.ru.pfx» -nocerts -out key.pem

Вас попросят указать пароль от Pfx архива, вы его задавали при экспорте, после чего нужно придумать пароль на pem файл.

pft to pem

В папке с дистрибутивом OpenSSL вы обнаружите файл key.pem, он нам нужен будет для следующего этапа.

Преобразование PFX в PEM

Преобразование PEM в KEY

Теперь получим файл с расширением key, для этого есть вот такая команда:

openssl rsa -in key.pem -out api.pyatilistnik.ru.key

Вас попросят указать пароль от pem ключа.

Преобразование PEM в KEY

В итоге я получил закрытый ключ в формате key.

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

Unable to load Private Key

PEM to KEY

Осталась финишная прямая.

Преобразование PFX в CRT

Иногда нужно из pfx получать crt, для этого воспользуйтесь такой конструкцией:

Получаем PFX ключ для импорта в IIS

Теперь когда у вас есть все составляющие, вы можете выполнить последнюю команду для создания PFX файла для IIS сервера.

openssl.exe pkcs12 -export -out api.pyatilistnik.ru.pfx -inkey api.pyatilistnik.ru.key -in api.pyatilistnik.ru.crt -certfile api.pyatilistnik.ru.ca-bundle

Задаем пароль для pfx файла, потребуется при импортировании.

PFX ключ для импорта в IIS

В итоге вы получаете нужный вам файл, который можно загружать на ваш почтовый сервер.

полученный pfx

Что делать если нет сертификата в запросах заявок на сертификат

Бывают ситуации, что на вашем сервере по каким-то причинам, в папке запросы на сертификат, может не оказаться вашего, в этом случае вам необходимо будет перейти в этой же mmc в раздел «Личное-Сертификаты». Выбираем нужный и делаем экспорт.

экспорт в p7b

Появится мастер экспорта сертификатов.

мастер экспорта p7b

Обратите внимание, что в pfx выгрузить не получится, но это не страшно, нам подойдет и p7b, но с включенной галкой «Включить по возможности все сертификаты в путь сертификации»

p7b в pfx

Указываем путь сохраняемого файла.

p7b в pem

Видим, что все успешно выполнено.

полученный файл p7b

Преобразование p7b в pem

Попробует такое преобразование.

openssl.exe pkcs7 -in new.pyatilistnik.ru.p7b -inform DER -print_certs -out new.pyatilistnik.ru.pem

p7b to pem-2

В итоге я получил файл new.pyatilistnik.ru.pem

p7b to pem

Ну, а дальше уже по инструкции сверху. Если у вас выскочит ошибка, по типу

То наш вариант это .crt в .der и уже .der в .pem

Преобразование CRT в PEM

Кладем так же все в одну папку, файл crt вам должны были прислать вместе с ca-bundle.

openssl x509 -in new.pyatilistnik.ru.crt -out new.pyatilistnik.ru.der -outform DER

Теперь der в pem.

openssl x509 -in new.pyatilistnik.ru.der -inform DER -out new.pyatilistnik.ru.pem -outform PEM

crt в der

В итоге у меня получилось, вот так.

der в pem

Как создать .ca-bundle

Если у вас нет в наличии отдельного файла с расширением .ca-bundle, то создать его очень просто. Вам должны были прислать несколько файлов в формате crt, от корневого и промежуточного центра сертификации. Посмотреть это можно в общем crt файле на вкладке «Путь сертификации«.

путь сертификации

В моем примере, корневым является DIGI, а промежуточным Thawte. При желании вы можете их выбрать и скопировать в виде файла формата crt. Откроем их с помощью блокнота. По сути создание .ca-bundle подразумевает объединение содержимого этих двух файлов цепочки. Это можно сделать через создание нового текстового файла и добавление в него данной информации с последующим изменением расширения txt на .ca-bundle или выполнить команду.

Step by Step Procedure to Convert a Cer Certificate to Pfx Without the Private Key

Arunkl

Before jumping into the procedure to convert a CER certificate to PFX without the private key. Let’s understand the difference between the certificate formats.

You can always refer X.509 certificate Request for Comments (RFC) and X.509 articles to know about the digital certificates in depth. X.509 certificates come majorly in two formats: Base64 (ASCII) and Binary. Again there are two formats underneath Base64. They are PEM and PKCS#7. As like Base64, Binary has two formats too: DER and PKCS#12. Of all these certificate formats few of them come bundled with a private key and few are not. To tell in short, .cer, .crt, and .p7b formats necessarily don’t have the private key with them. Whereas .pfx is always bundled with a private key.

Most of the Certificate Authorities will not issue certificates with the private key. They just issue and share the certificates in .cer, .crt, and .p7b formats which don’t have the private key in most of the cases. But, your application needs the certificate in .pfx format. Now, you have a .cer certificate in your hand, but you need a .pfx certificate to deploy. And, you can’t convert the .cer certificate to .pfx without the private key. This problem has created confusion in most people and may create delays in the certificate deployment/renewal process.

We thought it is an excellent idea to address this common problem. So we are here to explain the complete step by step process to convert a CER Certificate to PFX Without the private key.

How to Convert a CER Certificate to PFX Without the Private Key?

The procedure is quite simple. You can convert a CER certificate to PFX without the private key in three simple steps. But, this process will require the machine on which you have created the CSR (Certificate Signing Request) Because the private key had been created during the CRS creation process. We are just using the previously create private key to convert the CER certificate to PFX. Bear in mind, this process will work only on Windows platform.

  1. Import the certificate chain to their respective stores.
  2. Open the certificate snap-in in the Windows MMC console.
  3. Export the certificate in .pfx from the MMC console.

Time needed: 5 minutes.

How to Convert a CER Certificate to PFX Without the Private Key?

  1. Import the certificate to its personal certificate store

Right-click on the certificate file.
Select install certificate.

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

Каждый раз обновляя внешний сертификат на сервере SfB Edge и Reverse Proxy сталкиваюсь с проблемой. Данный факт происходит раз в 2-3 года, поэтому не сразу вспоминаешь что и как. Основная проблема в том, что на данных серверах стоит Microsoft IIS. Как известно IIS принимает сертификаты только в формате PFX. Мне же крипто провайдер присылает сертификат в формате CRT. Рассмотрим как выглядит конвертация CRT в PFX.

Помимо файла сертификата крипто провайдер также присылает файл с ключом. Обычно он в файле с разрешением .key, но может и просто в текстовом.

Перерыв стандартные возможности оснастки Сертификаты я не смог найти нужного мне пункта. Интернет также не сразу дал ответ. Еще раз озвучу задачу: нужно установить сертификат на IIS в формате PFX вместе с закрытым ключом.

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

Конвертация происходит с помощью утилиты openssl версия для Windows. Удобство данной утилиты в том, что она уже установлена в большинстве дистрибутивов Linux. Итак приступим:

После выполнения команды потребуется ввести пароль, придумайте его сами (он потребуется при импорте сертификате на IIS)

Введите пароль

Рассмотрим команды подробнее:

  • domain.name.pfx — название файла куда будет экспортирован сертификат в формате PFX
  • domain.name.key — файл с закрытым ключом
  • domain.name.crt — файл сертификата в формате CRT

Полученный сертификат в формате pfx устанавливаем на IIS сервер

Установка сертификата в IIS

Запускаем оснастку IIS Manager и заходим в Server Certificates

IIS Manager

Справа вверху появится меню Actions нажмем на кнопку Import

IIS Import

В открывшемся окне выбираем файл с сертификатом, вводим пароль что указывали выше при конвертации и нажимаем OK

Import Certificate

На этом все, далее просто выбираете сайт к которому необходимо применить сертификат.

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

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

Ниже мы рассмотрим один из способов конвертирования сертификата из PEM формата в PFX. В качестве инструмента для конвертирования мы будем использовать OpenSSL.

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

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

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

Создание PFX сертификата. Страница загрузки OpenSSL

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

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

Перечень установленный файлов OpenSSL

Процедура создания PFX сертификата

Для того, чтобы выполнить непосредственную конвертацию PEM сертификата в PFX выполните следующие действия:

1. Запустить командную строку от имени администратора.

2. Перейдите в директорию bin в папке с установленным дистрибутивом OpenSSL:

3. Выполните следующую команду:

in – путь до файла с открытым ключом,

inkey – путь до файла с закрытым ключом,

out – путь до файла, в который будет конвертирован сертификат.

4. Если ваш PEM файл был защищен парольной фразой, то openssl напишем вам соответствующее сообщение. Далее вам будет необходимо указать вашу парольную фразу, которой был защищен закрытый ключ:

5. Указываем парольную фразу, которой будет защищен наш итоговый PFX файл:

6. Дожидаемся окончания процедуры конвертирования сертификата.

После завершения процедуры конвертирования в указанной нами папке будет сгенерирован сертификат в PFX формате:

Проверка PFX сертификата

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

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

Заключение

В текущей статье мы рассмотрели процедуру конвертирования сертификата из PEM формата (с отдельными файлами для открытого и закрытого ключа) в PFX формат (файл, который включает в себя как открытый, так и закрытый ключ). Для конвертирования сертификата мы использовали утилиту OpenSSL.

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

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