Преобразование сертификатов crt в pfx и не только
- Для чего нужно преобразование сертификатов
- Как получить PFX ключ на IIS
- Установка OpenSSL для Windows
- Преобразование PFX в PEM
- Преобразование PEM в KEY
- Преобразование PFX в CRT
- Получаем PFX ключ для импорта в IIS
- Что делать если нет сертификата в запросах заявок на сертификат
- Преобразование p7b в pem
- Преобразование CRT в PEM
- Как создать .ca-bundle
Добрый день уважаемые читатели, в прошлый раз я вам рассказывал, о том, что такое csr запрос и мы его генерировали на IIS сервере, далее нам его нужно было передать в удостоверяющий центр для выпуска основного сертификата сервера, мы выбрали для этих целей сертификат comodo на 3 года от компании Emaro. Все замечательно, сертификат прислали, но есть одно но, когда вы попытаетесь импортировать сертификат в формате crt в IIS сервере, то получите предложение, только на импорт pfx формата, и если его не, то ошибку, что сертификат не содержит закрытого ключа. Давайте смотреть как это решить.
Для чего нужно преобразование сертификатов
Тут ответ, очень простой, все дело в формате работы с ними у каждой программы, будь то IIS или же Apache сервер. Более подробно про виды сертификатов и их назначение, я вам посоветую прочитать вот эту статью.
Давайте я подробнее покажу как выглядит ошибка импортирования сертификата. Во первых когда вы получаете от comodo ваш архив с сертификатами, то там будет два файла:
- с расширением .ca-bundle
- с расширением .crt
Попытавшись на сервере IIS произвести их импорт вы увидите вот такую картинку.
И тут нет ничего удивительного, так как это не pfx архив, то в нем нет нужного приватного ключа. Для его получения придется слегка постараться.
Как получить PFX ключ на IIS
нажимаем сочетание клавиш WIN+R и вводим mmc, для вызова оснастки. Я вам уже рассказывал о ее применении и удобстве для системного администратора.
Далее вам необходимо через меню "Файл" добавить новую оснастку.
Находим сертификаты и нажимаем кнопку "Добавить"
В следующем окне выбираем "для учетной записи компьютера"
подтверждаем, что нас интересует локальный компьютер.
Далее находим пункт "Запросы заявок на сертификат", тут вы обнаружите ваш запрос, находите его и через правый клик экспортируете его.
У вас откроется мастер экспорта сертификатов
Далее вы выбираете "Да, экспортировать закрытый ключ"
Ставим галку "Включить по возможности все сертификаты в путь сертификации" и начинаем наш экспорт PFX архива.
Теперь мастер экспорта, просит вас указать два раза нужный вам пароль, для защиты pfx архива.
Через кнопку обзор, указываем место сохранения вашего файла.
Нажимаем "Готово"
Как видим, все успешно выгружено.
Установка OpenSSL для Windows
Теперь нам необходимо наш файл pfx переделать в pem, Pem преобразовать в key:
- с расширением .ca-bundle
- с расширением .crt
- key
Вы получите из этих трех файлов, нужный для импорта pfx архив. Во всем этом нам поможет утилита OpenSSL для Windows.
В итоге у вас будет архив, распакуйте его куда вам будет угодно. Далее выберите вашу папку, зажмите SHIFT и щелкните по ней правым кликом, в открывшемся контекстном меню, выберите пункт "Открыть окно команд".
В результате чего у вас откроется командная строка Windows, но уже в нужной папке содержащей утилиту openssl.exe, она нам и поможет все сделать красиво.
Преобразование PFX в PEM
Теперь приступаем к получению фала в формате Pem. Положите в папку с дистрибутивом файл в формате pfx.
Мой пример:
openssl.exe pkcs12 -in api.pyatilistnik.ru.pfx" -nocerts -out key.pem
Вас попросят указать пароль от Pfx архива, вы его задавали при экспорте, после чего нужно придумать пароль на pem файл.
В папке с дистрибутивом OpenSSL вы обнаружите файл key.pem, он нам нужен будет для следующего этапа.
Преобразование PEM в KEY
Теперь получим файл с расширением key, для этого есть вот такая команда:
Мой пример:
openssl rsa -in key.pem -out api.pyatilistnik.ru.key
Вас попросят указать пароль от pem ключа.
В итоге я получил закрытый ключ в формате key.
31320:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY
Тут вся проблема, что в вашем pem файле просто нет закрытого ключа, в результате чего вы и получаете данную ошибку.
Осталась финишная прямая.
Преобразование 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
источник: https://medium.com/@thylux/how-to-create-csr-and-private-key-from-iis-3965191d67fe
Задаем пароль для pfx файла, потребуется при импортировании.
В итоге вы получаете нужный вам файл, который можно загружать на ваш почтовый сервер.
Что делать если нет сертификата в запросах заявок на сертификат
Бывают ситуации, что на вашем сервере по каким-то причинам, в папке запросы на сертификат, может не оказаться вашего, в этом случае вам необходимо будет перейти в этой же mmc в раздел "Личное-Сертификаты". Выбираем нужный и делаем экспорт.
Появится мастер экспорта сертификатов.
Обратите внимание, что в pfx выгрузить не получится, но это не страшно, нам подойдет и p7b, но с включенной галкой "Включить по возможности все сертификаты в путь сертификации"
Указываем путь сохраняемого файла.
Видим, что все успешно выполнено.
Преобразование p7b в pem
Попробует такое преобразование.
Мой пример
openssl.exe pkcs7 -in new.pyatilistnik.ru.p7b -inform DER -print_certs -out new.pyatilistnik.ru.pem
В итоге я получил файл new.pyatilistnik.ru.pem
Ну, а дальше уже по инструкции сверху. Если у вас выскочит ошибка, по типу
pyatilistnik.ru.key
unable to load Private Key
6944:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib
.c:647:Expecting: ANY PRIVATE KEY
То наш вариант это .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
В итоге у меня получилось, вот так.
Как создать .ca-bundle
Если у вас нет в наличии отдельного файла с расширением .ca-bundle, то создать его очень просто. Вам должны были прислать несколько файлов в формате crt, от корневого и промежуточного центра сертификации. Посмотреть это можно в общем crt файле на вкладке "Путь сертификации".
В моем примере, корневым является DIGI, а промежуточным Thawte. При желании вы можете их выбрать и скопировать в виде файла формата crt. Откроем их с помощью блокнота. По сути создание .ca-bundle подразумевает объединение содержимого этих двух файлов цепочки. Это можно сделать через создание нового текстового файла и добавление в него данной информации с последующим изменением расширения txt на .ca-bundle или выполнить команду.
Вот так выглядит команда по созданию .ca-bundle файла.
Мега статья, спасибо!!
Здравствуйте.
У меня есть два файла: .cet, .key.
В первом файле 3 секции, во втором одна.
При команде openssl — export из этих двух файлов получаю pfx. Загружаю его в IIS. Запускаю текст разными ssl checker’aми и вижу, что в отчетах отображается не вся цепочка. Такое ощущение, что при экпорте openssl взял только одну(но не взял корневые центры) секцию из файла .cer. Сертификат от let’s.