Для успешной установки и функционирования SSL сертификатов на различных платформах и устройствах, нередко их необходимо предоставить в разных форматах. Например, серверы Windows используют PFX файлы, для Apache серверов необходимы PEM файлы с расширением .crt или .cer. В этой статье мы поможем вам разобраться в следующих вопросах:
- Какие бывают форматыSSL сертификатов?
- Чем они отличаются?
- Как конвертировать SSL сертификаты из одного формата в другой?
Обновлено 09.03.2022
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов рунета Pyatilistnik.org. В прошлый раз мы с вами успешно настроили сеть на CentOS 7.6, двигаемся вперед. В сегодняшней публикации я вам хочу продемонстрировать, как вы можете выполнить экспорт сертификата или импорт сертификата из хранилища Windows. Уверен, что вы сами с легкостью можете найти кучу разных сценариев при которых вы можете использовать мою инструкцию.
Обновлено 06.07.2022

Добрый день уважаемые читатели, в прошлый раз я вам рассказывал, о том, что такое csr запрос и мы его генерировали на IIS сервере, далее нам его нужно было передать в удостоверяющий центр для выпуска основного сертификата сервера, мы выбрали для этих целей сертификат comodo на 3 года от компании Emaro. Все замечательно, сертификат прислали, но есть одно но, когда вы попытаетесь импортировать сертификат в формате crt в IIS сервере, то получите предложение, только на импорт pfx формата, и если его не, то ошибку, что сертификат не содержит закрытого ключа. Давайте смотреть как это решить.
Обновлено 11.09.2018
Добрый день! Уважаемые читатели и гости крупнейшего IT блога в России pyatilistnik.org. В прошлый раз мы разбирали ситуацию, что утилита КриптоПРО не видела токен Jacarta, согласитесь, что при решении этой проблемы было бы здорово иметь тестовый ключ с сертификатом, и параллельно ваш коллега мог бы тоже траблшутить. Еще тестовый сертификат CryptoPRO может быть полезен, при процедуре переноса контейнера КриптоПРО из реестра в случае с не экспортируемым закрытым ключом. Сегодня я вас научу генерировать нормальный, тестовый сертификат шифрования или подписи для разных задачу.
|
lifayk Оставлено | |
Здравствуйте. Пытаюсь сгенерировать и загрузить пару RSA+сертификат в КриптоПРО 4. Подскажите, пожалуйста, что я делаю не так? Код: | |
|
Андрей Русев Оставлено | |
Здравствуйте. | |
- Gost PEM Extractor
- Требования для работы
- Для экспорта из ViPNet CSP:
- Для экспорта из КриптоПро CSP:
- Сборка
- Запуск
- Описание проблемы для конвертации. pem
- Лучшее решение
- Возможные решения
- примечания
- пример
- Импорт сертификата в Windows
- Формат сертификата PEM
- Формат сертификата DER
- PKCS # 7 / P7B сертификат
- PFX сертификат (формат PKCS # 12)
- Онлайн конвертер SSL сертификатов
- Конвертация PEM в DER
- Конвертация PEM в P7B / PKCS#7
- Конвертация PEM в PFX / PKCS#12
- Конвертация PFX / PKCS#12 в PEM
- Как получить PFX ключ на IIS
- Установка OpenSSL для Windows
- Преобразование PFX в PEM
- Преобразование PEM в KEY
- Получаем PFX ключ для импорта в IIS
- Конвертация SSL сертификатов в OpenSSL
- Генерация тестового сертификата
- Установка КриптоПро ЭЦП Browser plug-in.
- Примеры сценариев при импорте и экспорте сертификата
- Что делать если нет сертификата в запросах заявок на сертификат
- Преобразование p7b в pem
- Преобразование CRT в PEM
- Для чего нужно преобразование сертификатов
- Экспорт сертификата Windows
- Как создать. ca-bundle
Gost PEM Extractor
Основано на Privkey2012
Требования для работы
При экспорте из ViPNet CSP достаточно PFX с включенным в него приватным ключом.
При экспорте из КриптоПро CSP нужен PFX (не обязательно с ключом) и ключ (хранилище).
Хранилище это директория с файлами:
header.key
masks.key
masks2.key
name.key
primary.key
primary2.keyДля экспорта из ViPNet CSP:
- В окне «ViPNet CSP» в разделе «Контейнеры ключей» выберите контейнер ключей, содержащий сертификат или сертификат и закрытый ключ, которые вы хотите экспортировать. Нажмите кнопку «Свойства» либо дважды щелкните нужный контейнер ключей.
- В окне «Свойства контейнера ключей» нажмите кнопку «Открыть».
- В окне «Сертификат» перейдите на вкладку «Состав» и нажмите кнопку «Копировать в файл».
- На странице приветствия мастера экспорта сертификатов нажмите кнопку «Далее».
- На странице «Экспортирование закрытого ключа» укажите, что хотите вместе с сертификатом экспортировать закрытый ключ.
- На странице «Формат экспортируемого файла» выберите формат PKCS #12 (.PFX).
- На странице «Пароль» задайте и подтвердите пароль доступа к экспортируемому закрытому ключу.
- На странице «Имя файла экспорта» укажите диреткторию, в которой вы хотите создать файл с экспортируемыми ключами, и задайте имя этого файла.
- На странице завершения работы мастера экспорта сертификатов нажмите кнопку «Готово».
Для экспорта из КриптоПро CSP:
- Перейти в Панель управления (ПУСК – Панель управления) найдите и запустить КриптоПро CSP.
- На вкладке сервис выбрать «Просмотреть сертификат в контейнере».
- Выбрать нужный контейнер и нажать «Далее». Если в контейнере присутствует сертификат, то отобразится информация о нём.
- Нажать «Свойства». Откроется сам сертификат.
- Перейти на вкладку «Состав». Нажать кнопку «Копировать в файл».
- Выбрать варианты: «Нет, не экспортировать закрытый ключ» и «Файл в DER-кодировке X509» (.CER)
- Указать путь для сохранения файла сертификата.
- На вкладке сервис выбрать «Скопировать».
- Выбрать нужный контейнер и нажать «Далее» и следуя мастеру, скопировать ключ на съемный носитель.
Сборка
docker build -t zazmaster/gostpemextractor ./Запуск
Файл certificate.pfx и диреткория storage.001 находятся в текущей директории. При успехе в текущей директории создаются два файла certificate.crt.pem и certificate.key.pem
Пример при наличии pfx файла и хранилища закрытого ключа:
docker run --rm -ti -v `pwd`:/work zazmaster/gostpemextractor -f certificate.pfx -p password -s storage.001Пример при наличии только pfx файла с включенным в него приватным ключом:
docker run --rm -ti -v `pwd`:/work zazmaster/gostpemextractor -f certificate.pfx -p password Пример команды для Windows:
docker run --rm -ti -v C:\temp\cert\1231:/work zazmaster/gostpemextractor -f certificate.pfx -p password -s storage.001|
kuvschin Оставлено | |
Подскажите пожалуйста как получить папку (например, “MySite.001”), содержающую файлы header.key, masks.key, masks2.key, name.key, primary.key, primary2.key – из файлов .key + .crt? | |
|
Александр Лавник Оставлено | |
Автор: kuvschin Подскажите пожалуйста как получить папку (например, “MySite.001”), содержающую файлы header.key, masks.key, masks2.key, name.key, primary.key, primary2.key – из файлов .key + .crt? Попробуйте так: Код: | |
|
kuvschin Оставлено | |
Доброго. X:\1>”C:\Program Files\OpenSSL-Win64\bin\openssl.exe” pkcs12 -export -out bsoinsuronline.pfx -inkey bsoinsuronline.key -in bsoinsuronline.crt -keypbe gost89 X:\1> | |
|
Андрей * Оставлено | |
|
kuvschin Оставлено | |
OpenSSL-Win64 | |
|
kuvschin Оставлено | |
Господа, что за тишина, вас оскорбила моя версия опенссл? | |
|
kuvschin Оставлено | |
Люди, помогите пожалуйста. | |
|
TolikTipaTut1 Оставлено | |
Код: | |
|
kuvschin Оставлено | |
Доброго .pem у меня нет файлов с таким расширением, только .key и .crt Первая строка: C:\Users\CO09-3>x: X:\>cd 1 X:\1>”C:\Program Files\OpenSSL-Win64\bin\openssl.exe” pkcs12 -engine gost -export -inkey bsoinsuronline.key -in bsoinsuronline.crt -out pfx.pfx -password pass:123 -keypbe gost89 -certpbe gost89 -macalg md_gost12_256 X:\1> До второй не дошло т.к. первая не сработала, да и нет у меня такого файла p12util.x86.exe | |
|
TolikTipaTut1 Оставлено | |
Так, в сертификате какой алгоритм указан? Чтобы узнать, надо дважды кликнуть по сертификату, и в открывшемся окне выбрать вкладку “Состав”. Нужные поля называются: “Алгоритм подписи” и “Хэш-алгоритм подписи”. Отредактировано пользователем 1 апреля 2022 г. 20:47:30(UTC) | |
|
kuvschin Оставлено | |
sha256RSA | |
|
TolikTipaTut1 Оставлено | |
Тааааак…… А зачем вам КриптоПро для этого, если у вас RSA-шный серт? | |
|
kuvschin Оставлено | |
Ну как – эта хрень позволяет серверу себя удостоверить, я прикручу её к авторизации стуннель. Только мне надо чтобы оно в контейнере криптопро жило:) | |
|
TolikTipaTut1 Оставлено | |
Мне даже интересно стало – а что вам раньше выдавало минцифры? Гостовые серты что-ли? Отредактировано пользователем 1 апреля 2022 г. 22:15:16(UTC) | |
|
kuvschin Оставлено | |
Это выдано впервые, раньше ничего не выдавало минцифры. | |
|
Андрей * Оставлено | |
Автор: kuvschin Это выдано впервые, раньше ничего не выдавало минцифры. Ключ RSA, | |
|
kuvschin Оставлено | |
Мне так выше сказали сделать: Попробуйте так: | |
|
TolikTipaTut1 Оставлено | |
Автор: kuvschin Мне так выше сказали сделать: Попробуйте так: Честно сказать, когда писал – не знал, что у вас rsa. Ранее же нигде вы об этом публично не заявляли вроде как… Удалите из команды все параметры, связанные с ГОСТ-ом. Отредактировано пользователем 2 апреля 2022 г. 0:10:16(UTC) | |
|
kuvschin Оставлено | |
Автор: TolikTipaTut1 Автор: kuvschin Мне так выше сказали сделать: Попробуйте так: Честно сказать, когда писал – не знал, что у вас rsa. Ранее же нигде вы об этом публично не заявляли вроде как… Удалите из команды все параметры, связанные с ГОСТ-ом. “C:\Program Files\OpenSSL-Win64\bin\openssl.exe” pkcs12 -export -out bsoinsurru.pfx -inkey bsoinsurru.key -in bsoinsurru.crt В том-то и вся беда, что мы зашли на круг. | |
|
Андрей * Оставлено | |
И зачем нужно, чтобы было в КриптоПро csp? (подразумевая реализацию с RSA) Конечная цель, чтобы приложение по сертификату получило доступ к ЗК. Проверили? | |
|
kuvschin Оставлено | |
Подскажите пожалуйста как получить папку (например, “MySite.001”), содержающую файлы header.key, masks.key, masks2.key, name.key, primary.key, primary2.key – из файлов .key + .crt? | |
|
Александр Лавник Оставлено | |
Автор: kuvschin Подскажите пожалуйста как получить папку (например, “MySite.001”), содержающую файлы header.key, masks.key, masks2.key, name.key, primary.key, primary2.key – из файлов .key + .crt? Попробуйте так: Код: | |
|
kuvschin Оставлено | |
Доброго. X:\1>”C:\Program Files\OpenSSL-Win64\bin\openssl.exe” pkcs12 -export -out bsoinsuronline.pfx -inkey bsoinsuronline.key -in bsoinsuronline.crt -keypbe gost89 X:\1> | |
|
Андрей * Оставлено | |
|
kuvschin Оставлено | |
OpenSSL-Win64 | |
|
kuvschin Оставлено | |
Господа, что за тишина, вас оскорбила моя версия опенссл? | |
|
kuvschin Оставлено | |
Люди, помогите пожалуйста. | |
|
TolikTipaTut1 Оставлено | |
Код: | |
|
kuvschin Оставлено | |
Доброго .pem у меня нет файлов с таким расширением, только .key и .crt Первая строка: C:\Users\CO09-3>x: X:\>cd 1 X:\1>”C:\Program Files\OpenSSL-Win64\bin\openssl.exe” pkcs12 -engine gost -export -inkey bsoinsuronline.key -in bsoinsuronline.crt -out pfx.pfx -password pass:123 -keypbe gost89 -certpbe gost89 -macalg md_gost12_256 X:\1> До второй не дошло т.к. первая не сработала, да и нет у меня такого файла p12util.x86.exe | |
|
TolikTipaTut1 Оставлено | |
Так, в сертификате какой алгоритм указан? Чтобы узнать, надо дважды кликнуть по сертификату, и в открывшемся окне выбрать вкладку “Состав”. Нужные поля называются: “Алгоритм подписи” и “Хэш-алгоритм подписи”. Отредактировано пользователем 1 апреля 2022 г. 20:47:30(UTC) | |
|
kuvschin Оставлено | |
sha256RSA | |
|
TolikTipaTut1 Оставлено | |
Тааааак…… А зачем вам КриптоПро для этого, если у вас RSA-шный серт? | |
|
kuvschin Оставлено | |
Ну как – эта хрень позволяет серверу себя удостоверить, я прикручу её к авторизации стуннель. Только мне надо чтобы оно в контейнере криптопро жило:) | |
|
TolikTipaTut1 Оставлено | |
Мне даже интересно стало – а что вам раньше выдавало минцифры? Гостовые серты что-ли? Отредактировано пользователем 1 апреля 2022 г. 22:15:16(UTC) | |
|
kuvschin Оставлено | |
Это выдано впервые, раньше ничего не выдавало минцифры. | |
|
Андрей * Оставлено | |
Автор: kuvschin Это выдано впервые, раньше ничего не выдавало минцифры. Ключ RSA, | |
|
kuvschin Оставлено | |
Мне так выше сказали сделать: Попробуйте так: | |
|
TolikTipaTut1 Оставлено | |
Автор: kuvschin Мне так выше сказали сделать: Попробуйте так: Честно сказать, когда писал – не знал, что у вас rsa. Ранее же нигде вы об этом публично не заявляли вроде как… Удалите из команды все параметры, связанные с ГОСТ-ом. Отредактировано пользователем 2 апреля 2022 г. 0:10:16(UTC) | |
|
kuvschin Оставлено | |
Автор: TolikTipaTut1 Автор: kuvschin Мне так выше сказали сделать: Попробуйте так: Честно сказать, когда писал – не знал, что у вас rsa. Ранее же нигде вы об этом публично не заявляли вроде как… Удалите из команды все параметры, связанные с ГОСТ-ом. “C:\Program Files\OpenSSL-Win64\bin\openssl.exe” pkcs12 -export -out bsoinsurru.pfx -inkey bsoinsurru.key -in bsoinsurru.crt В том-то и вся беда, что мы зашли на круг. | |
|
Андрей * Оставлено | |
И зачем нужно, чтобы было в КриптоПро csp? (подразумевая реализацию с RSA) Конечная цель, чтобы приложение по сертификату получило доступ к ЗК. Проверили? | |
Описание проблемы для конвертации. pem
от.pemИзвлечь / конвертировать сертификат.crtИ закрытый ключ.keyКаков правильный метод или команда для файла? Я знаю, что они конвертируемые, но я не знаю, как это сделать.
Лучшее решение
Вы можете конвертировать pem в crt используя:
openssl x509 -outform der -in your-cert.pem -out your-cert.crtВозможные решения
Преобразование с использованием OpenSSL
Следующая команда позволяет преобразовывать сертификаты и ключи в различные форматы, делая их совместимыми с определенными типами серверов или программного обеспечения.
- воли
DERФайл (.crt .cer .der) ВPEM
openssl x509 -inform der -in certificate.cer -out certificate.pem- воли
PEMФайлы преобразованы вDER
openssl x509 -outform der -in certificate.pem -out certificate.der- Будет содержать закрытый ключ и сертификат
PKCS#12Файл (.pfx .p12) ВPEM
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodesYou can add -nocerts to only output the private key or add -nokeys to only output the certificates.
- воли
PEMФайл сертификата и закрытый ключ преобразуются вPKCS#12(.pfx .p12)
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt- воли
PEMПеревести наCRT (файл .CRT)
openssl x509 -outform der -in certificate.pem -out certificate.crtOpenSSL для PEM
- воли
PEMПеревести наDER
openssl x509 -outform der -in certificate.pem -out certificate.der- воли
PEMПеревести наP7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer- воли
PEMПеревести наPFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crtOpenSSLизменениеDER
- воли
DERПеревести наPEM
openssl x509 -inform der -in certificate.cer -out certificate.pemOpenSSLизменениеP7B
- воли
P7BПеревести наPEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer- воли
P7BПеревести наPFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.ceropenssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cerOpenSSLизменениеPFX
- воли
PFXПеревести наPEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodesпоOpenSSLгенерироватьrsaключ
- Использовать в командной строке
OpenSSL, Сначала нужно сгенерировать открытый и закрытый ключи, вы должны использовать-passoutПараметр password защищает этот файл. Этот параметр может принимать различные формы, см.OpenSSLДокументы.
openssl genrsa -out private.pem 1024 - Это создаст файл ключа с именем private.pem, который использует 1024 бита. Файл фактически имеет как закрытый ключ, так и открытый ключ, и открытый ключ можно извлечь из файла:
openssl rsa -in private.pem -out public.pem -outform PEM -puboutor
openssl rsa -in private.pem -pubout > public.pemor
openssl rsa -in private.pem -pubout -out public.pemТеперь вашpublic.pemСодержит только открытый ключ, который может свободно передаваться третьим лицам. Вы можете проверить это, зашифровав свои данные с помощью открытого ключа, а затем расшифровав его с помощью закрытого ключа. Сначала нам понадобятся некоторые данные для шифрования:
- Пример файла:
echo 'too many secrets' > file.txtСейчас вfile.txtВ нем есть некоторые данные, которые вы можете использоватьOpenSSLИ шифрование с открытым ключом:
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl- Это создаст зашифрованную версию
file.txtИ закажите этот файл какfile.ssl(Если вы откроете этот файл напрямую, чтобы просмотреть его, то он выглядит как двоичный мусор и не может быть понят человеком). Затем его можно расшифровать с помощью закрытого ключа:
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt- Сейчас в
decryptpted.txtСуществует незашифрованный файл в:
cat decrypted.txt
|output -> too many secretsOpenSSLRSAВарианты инструмента
Название: инструмент обработки ключей RSA-RSA
Описание: rsaОбработка командRSAКлюч. Они могут конвертировать различные формы и распечатывать свои компоненты. Обратите внимание, что эта команда использует традиционныеSSLeayШифрование закрытым ключом в совместимом формате: новые приложения должны использоватьpkcs8Утилиты более безопасныPKCS#8Формат.
примечания
- Формат закрытого ключа PEM использует следующие строки верхнего и нижнего колонтитула:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY------ Формат открытого ключа PEM использует следующие строки верхнего и нижнего колонтитула:
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY------ Формат PEM RSAPublicKey использует следующие строки верхнего и нижнего колонтитула:
-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----NETФормат такой же как старыйNetscapeСервер иMicrosoft IIS .keyФайл совместимый формат, который использует незашифрованныйRC4Зашифрованные. Этот метод не очень безопасен, поэтому используйте его только при необходимости. Некоторые более новые версииIISВ экспортируемом.keyВ файле есть другие дополнительные данные. Чтобы использовать эти утилиты, используйте бинарный редактор для просмотра файлов и поиска строк”private-key”А затем вернемся к последовательности байтов0x30,0x82(ЭтоASN1 SEQUENCE). Скопируйте все данные из этой точки в другой файл и используйте его как-inform NETопцииrsaСервисный ввод.
пример
- Чтобы удалить фразу-пароль для закрытого ключа RSA:
openssl rsa -in key.pem -out keyout.pem- Зашифруйте закрытый ключ с помощью тройного DES:
openssl rsa -in key.pem -des3 -out keyout.pem- Преобразовать закрытый ключ из формата PEM в DER:
openssl rsa -in key.pem -outform DER -out keyout.der- Выведите компоненты закрытого ключа на стандартный вывод:
openssl rsa -in key.pem -text -noout- Чтобы вывести открытую часть закрытого ключа:
openssl rsa -in key.pem -pubout -out pubkey.pem- с
RSAPublicKeyОтформатируйте открытую часть закрытого ключа:
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pemИмпорт сертификата в Windows
Ранее я вам рассказывал, где в операционной системе Windows хранятся сертификаты и вы помните, что там есть два глобальных контейнера:
- Первый, это для компьютера
- Второй для пользователя
Я в своем примере буду импортировать сертификат в раздел локального компьютера, в личное расположение. И так у меня есть Wildcard сертификат имеющий формат PFX архива. Существует два метода импорта сертификата в операционных системах Windows:
- Через графический мастер импорта сертификатов
- Через использование утилиты командной строки certutil
Давайте начнем с самого простого метода, через графический интерфейс. У меня есть файл pyatilistnik.pfx. Я щелкаю по нему двойным кликом и запускаю мастер импорта сертификатов.

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

Мастер импорта сертификата попытается удостовериться, какой файл вы будите копировать, поддерживаются форматы PFX, P12, p7b и SST.

На следующем этапе вы указываете пароль от данного сертификата, при желании можете поставить галку “Пометить этот ключ как экспортируемый, что позволит сохранить резервную копию ключа и перемещать его”. Данная галка полезна при использовании сертификата их реестра, ну и потом можно будет его при необходимости перенести, но это МЕНЕЕ БЕЗОПАСНО, не не смертельно если есть пароль.

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

Нажимаем далее.

Завершаем мастер импорта сертификатов.

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

Давайте удостоверимся, что у вас появился ваш сертификат, тут вы можете воспользоваться оснасткой mmc “сертификаты” или же утилитой certutil. Я покажу оба варианта, откройте командную строку или оболочку PowerShell и выполните:

В итоге у вас будет список всех ваших сертификатов, если знаете его CN, то можете отфильтровать по findstr. Второй вариант, это в окне выполнить открыть mmc и добавить там оснастку “Сертификаты” (Подробнее по ссылке выше про mmc).

В контейнере “Личное – Сертификаты” я вижу свой Wildcard SSL сертификат, и по значку я вижу, что в нем есть закрытый ключ. Я его удалю, чтобы импортировать его с помощью certutil.

Для импорта сертификата вам нужно через команду cd перейти в каталог, где хранится pfx архив. В моем примере, это каталог C:\Temp\wildcard.
Далее импортируем наш сертификат. пишем команду:
certutil -importPFX -p “12345678” my pyatilistnik.pfx
Где -p, это пароль, а pyatilistnik.pfx имя файла.

Все с копированием сертификата в ваше локальное хранилище мы разобрались, переходим к экспорту.
Формат сертификата PEM
PEM – наиболее популярный формат среди сертификационных центров. PEM сертификаты могут иметь расширение .pem, .crt, .cer, и .key (файл приватного ключа). Она представляют собой ASCII файлы, закодированные по схеме Base64. Когда вы открываете файл pem формата в текстовом редакторе, вы можете увидеть, что текст кода в нем начинается с тега “—– BEGIN CERTIFICATE —–” и заканчивая тегом “—– END CERTIFICATE —–“. Apache и другие подобные серверы используют сертификаты в PEM формате. Обратите внимание, что в одном файле может содержатся несколько SSL сертификатов и даже приватный ключ, один под другим. В таком случае каждый сертификат отделен от остальных ранее указанными тегами BEGIN и END. Как правило, для установки SSL сертификата на Apache, сертификаты и приватный ключ должны быть в разных файлах.
Формат сертификата DER
DER формат – это бинарный тип сертификата вместо формата PEM. В PEM формате чаще всего используется расширение файла .cer, но иногда можно встретить и расширение файла .der. Поэтому чтобы отличить SSL сертификат в формате PEM от формата DER, следует открыть его в текстовом редакторе и найти теги начала и окончания сертификата (BEGIN/END). DER SSL сертификаты, как правило, используются на платформах Java.
PKCS # 7 / P7B сертификат
SSL сертификаты в формате PKCS # 7 или P7B – это файлы, которые хранятся в формате Base64 ASCII и имеют расширение файла .p7b или .p7c. P7B сертификаты содержат теги начала сертификата “—– BEGIN PKCS7 ——” и его конца “—– END PKCS7 —–“. Файлы в формате P7B включают в себя только ваш SSL сертификат и промежуточные SSL сертификаты. Приватный ключ при этом идет отдельным файлом. SSL сертификаты в формате PKCS # 7 / P7B поддерживают следующие платформы: Microsoft Windows и Java Tomcat.
PFX сертификат (формат PKCS # 12)
Формат SSL сертификата PKCS # 12 или, как его еще называют, PFX сертификат – бинарный формат, при использовании которого в одном зашифрованном файле хранится не только ваш личный сертификат сервера и промежуточные сертификаты центра сертификации, но и ваш закрытый ключ. PFX файлы, как правило, имеют расширение .pfx или .p12. Обычно, файлы формата PFX используются на Windows серверах для импорта и экспорта файлов сертификатов и вашего приватного ключа.
Онлайн конвертер SSL сертификатов
Также существуют онлайн программы для конвертации сертификатов из одного формата в другой. Например, мы можем посоветовать SSL конвертер от SSLShopper. Используйте этот SSL конвертер для преобразования SSL-сертификатов различных форматов, таких как PEM, DER, P7B и PFX. Чтобы использовать SSL-конвертер, просто выберите файл сертификата и его текущий тип (он определяется по формату расширения), затем выберите формат, в какой Вам необходимо преобразовать SSL сертификат и нажмите кнопку “Convert Certificate”. Обратите внимание, что в зависимости от того, в какой формат вам нужно конвертировать SSL сертификат, от вас потребуются разные исходящие файлы.
Конвертация PEM в DER
Для конвертации стандартного сертификата в формате PEM в бинарный формат DER, потребуется только файлSSL сертификата. Обычно, вы его получаете в архиве вместе с промежуточными сертификатами. Как правило, в его названии указано имя вашего домена.
Конвертация PEM в P7B / PKCS#7
Если же вам нужно преобразовать ваш стандартный SSL сертификат в файл формата P7B / PKCS#7, вы можете кроме SSL сертификата вашего домена загрузить также файлы с цепочками сертификатов. Более подробно о том, что такое цепочка SSL сертификатов, мы писали в статье о CA-bundle.

Конвертация PEM в PFX / PKCS#12
Обратите внимание, что для конвертации стандартного формата SSL сертификата необходимо добавить еще один файл – ваш приватный ключ. Приватный ключ – это конфиденциальная информация, которая должна быть только у вас. Поэтому центры сертификации не высылают его месте с файлами вашего сертификата. Приватный ключ создается в момент генерации CSR запроса. Если вы генерируете CSR у себя на сервере, на нем же должен автоматически сохраниться ключ. Если вы создаете CSR запрос в специальном инструменте на нашем сайте (на странице по ссылке или во время заполнения технических данных), ключ показывается вам в конце генерации CSR (или введения технических данных), но не сохраняется в нашей базе данных. Поэтому важно, чтобы вы самостоятельно сохранили приватный ключ.
Конвертация PFX / PKCS#12 в PEM
Если вам необходимо преобразовать SSL сертификат формата PFX в PEM-формат, следует открыть файл сертификата в любом текстовом редакторе и скопировать текст каждого сертификата вместе с тегами BEGIN / END в отдельные файлы, после чего их следует сохранить их как certificate.cer (для сертификата вашего сервера) и cacert.cer (для цепочки промежуточных сертификатов). То же самое следует проделать с текстом приватного ключа и сохранить его под названием privatekey.key.
Как получить PFX ключ на IIS
нажимаем сочетание клавиш WIN+R и вводим mmc, для вызова оснастки. Я вам уже рассказывал о ее применении и удобстве для системного администратора.

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

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

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

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

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

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

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

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

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

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

Нажимаем “Готово”

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

Установка OpenSSL для Windows
Теперь нам необходимо наш файл pfx переделать в pem, Pem преобразовать в key:
- с расширением .ca-bundle
- с расширением .crt
- key
Вы получите из этих трех файлов, нужный для импорта pfx архив. Во всем этом нам поможет утилита OpenSSL для Windows.
Скачать OpenSSL для Windows x64 – https://cloud.mail.ru/public/MZmy/yKvJkc7Ad
В итоге у вас будет архив, распакуйте его куда вам будет угодно. Далее выберите вашу папку, зажмите SHIFT и щелкните по ней правым кликом, в открывшемся контекстном меню, выберите пункт “Открыть окно команд”.

В результате чего у вас откроется командная строка Windows, но уже в нужной папке содержащей утилиту openssl.exe, она нам и поможет все сделать красиво.
Преобразование PFX в PEM
Теперь приступаем к получению фала в формате Pem. Положите в папку с дистрибутивом файл в формате pfx.
openssl.exe pkcs12 -in “имя вашего pfx файла” -nocerts -out key.pem
Мой пример:
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 <путь к вашему файлу key>
Мой пример:
openssl rsa -in key.pem -out api.pyatilistnik.ru.key
Вас попросят указать пароль от pem ключа.

В итоге я получил закрытый ключ в формате key.
Еще у вас может возникнуть ошибка: unable to load Private Key 31320:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY
Тут вся проблема, что в вашем pem файле просто нет закрытого ключа, в результате чего вы и получаете данную ошибку.

Если у вас есть файл с csr запросом, ты вы его можете просто переделать из текущего расширения в key

Осталась финишная прямая.
Получаем PFX ключ для импорта в IIS
Теперь когда у вас есть все составляющие, вы можете выполнить последнюю команду для создания PFX файла для IIS сервера.
openssl pkcs12 -export -out doman_com.pfx -inkey doman_com.key -in doman_com.crt -certfile doman_com.ca-bundle
Мой пример:
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 файла, потребуется при импортировании.

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

Конвертация SSL сертификатов в OpenSSL
Данные команды OpenSSL дают возможность преобразовать сертификаты и ключи в разные форматы. Для того чтобы сделать их совместимыми с определенными видами серверов, либо ПО. К примеру, Вам необходимо конвертировать обыкновенный файл PEM, который будет работать с Apache, в формат PFX (PKCS # 12) с целью применения его с Tomcat, либо IIS.
- Конвертировать PEM в DER
openssl x509 -outform der -in certificate.pem -out certificate.der
- Конвертировать PEM в P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
- Конвертировать PEM в PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
- Конвертировать DER в PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
- Конвертировать P7B в PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
- Конвертировать P7B в PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.ceropenssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
- Конвертировать PFX в PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
Генерация тестового сертификата
Как я и писал выше вы много, где сможете его применять, я когда знакомился с миром сертификатов и электронных подписей, то использовал тестовые ЭЦП от КриптоПРО для проверки правильности настройки программного обеспечения для работы на электронных, торговых площадках. Чтобы сгенерировать тестовый электронный сертификат, компания КриптоПРО предоставила вам специальный удостоверяющий, виртуальный центр, которым мы и воспользуемся. Переходим по ссылке:
https://www.cryptopro.ru/certsrv/
В самом низу у вас будет ссылка на пункт “Сформировать ключи и отправить запрос на сертификат”.

Я вам советую этот сайт открывать в Internet Explore, меньше будет глюков. Как открыть Internet Explore в Windows 10, читайте по ссылке слева
Если же вы хотите использовать другой браузер, то установите КриптоПро ЭЦП Browser plug-in.
Установка КриптоПро ЭЦП Browser plug-in.
Сама инсталляция плагина, очень простая, скачиваем его и запускаем.

Для запуска нажмите “Выполнить”

Далее у вас появится окно с уведомлением, что будет произведена установка КриптоПро ЭЦП Browser plug-in, соглашаемся.

После инсталляции утилиты, вам нужно будет обязательно перезапустить ваш браузер.

Открыв ваш браузер, вы увидите предупредительный значок, нажмите на него.

В открывшемся окне нажмите “Включить расширение”

Не забудьте установить КриптоПРО CSP на компьютер, где будет генерироваться сертификат
Теперь у нас все готово. Нажимаем “Сформировать ключи и отправить запрос на сертификат”. Согласитесь с выполнением операции.

У вас откроется форма расширенного запроса сертификата. Вначале заполним раздел “Идентифицирующие сведения”. В него входят пункты:
- Имя
- Электронная почта
- Организация
- Подразделение
- Город
- Область
- Страна

Далее вам нужно указать тип требуемого сертификата. В двух словах, это область применения ЭЦП:
- Сертификат проверки подлинности клиента (самый распространенный вариант, по сути для подтверждения, что вы это вы)
- Сертификат защиты электронной почты
- Сертификат подписи кода
- Сертификат подписи штампа времени
- Сертификат IPSec, для VPN тунелей.
- Другие, для специальных OID
Я оставляю “Сертификат проверки подлинности клиента”.

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

Для удобства еще можете заполнить поле “Понятное имя”, для быстрой идентификации вашей тестовой ЭЦП от КриптоПРО. Нажимаем выдать тестовый сертификат.

У вас появится запрос на создание, в котором вам необходимо указать устройство, на которое вы будите записывать тестовый сертификат КриптоПРО, в моем случае это е-токен.

Как только вы выбрали нужное устройство появится окно с генерацией случайной последовательности, в этот момент вам необходимо нажмить любые клавиши или водить мышкой, это защита от ботов.

Все наш контейнер КриптоПРО сформирован и для его записи введите пин-код.

Вам сообщат, что запрошенный вами сертификат был вам выдан, нажимаем “Установить этот сертификат”.

Если у вас еще не установленны корневые сертификаты данного центра сертификации, то вы получите вот такую ошибку:
Данный ЦС не является доверенным
Для ее устранения нажмите на ссылку “установите этот сертификат ЦС”

У вас начнется его скачивание.

Запускаем его, как видите в левом верхнем углу красный значок, чтобы его убрать нажмите “Установить сертификат”, оставьте для пользователя.

Далее выбираем пункт “Поместить все сертификаты в следующее хранилище” и через кнопку обзор указываете контейнер “Доверенные корневые центры сертификации”. Далее ок.

На последнем этапе у вас выскочит окно с предупреждением, о подтверждении установки сертификатов, нажимаем “Да”.

Открываем снова окно с выпуском тестового сертификата КриптоПРО и заново нажимаем “Установить сертификат”, в этот раз у вас вылезет окно с вводом вашего пин-кода от вашего носителя.

Если вы его ввели правильно, то увидите, что новый сертификат успешно установлен.

Теперь открывайте ваш КриптоПРО и посмотрите есть ли сертификат в контейнере. Как видите в контейнере есть наша ЭЦП.

Если посмотреть состав, то видим все наши заполненные поля. Вот так вот просто выпустить бесплатный, тестовый сертификат КриптоПРО, надеюсь было не сложно.

Примеры сценариев при импорте и экспорте сертификата
Если вы мой постоянный читатель, то вам уже должны быть знакомы понятие SSL сертификата, его виды и назначение. Сейчас уже сложно себе представить работу юридических лиц, ИП и обычных граждан без сертификатов и ЭЦП. Многие программы используют их для шифрования трафика, например при документообороте или при доступе к сервису, очень частый пример, это кабинет клиент-банка.
В большинстве случаев у людей на компьютере установлена операционная система Windows, она не идеальна и бывают частые случаи ее выхода из строя. При таком раскладе у вас легко могла возникать ситуация по восстановлению вашего сертификата из хранилища Windows, или при обновлении вашего компьютера на более новый, где так же производили перенос сертификатов, я приводил такой пример для КриптоПРО. Переходим к практике.
Что делать если нет сертификата в запросах заявок на сертификат
Бывают ситуации, что на вашем сервере по каким-то причинам, в папке запросы на сертификат, может не оказаться вашего, в этом случае вам необходимо будет перейти в этой же mmc в раздел “Личное-Сертификаты”. Выбираем нужный и делаем экспорт.
Или вы можете просто открыть существующий CRT и в нем так же выгрузить P7B, это не потребует установку crt

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

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

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

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

Преобразование p7b в pem
Попробует такое преобразование.
openssl pkcs7 -in cert.p7b -inform DER -print_certs -out cert.pem
Мой пример
openssl.exe pkcs7 -in new.pyatilistnik.ru.p7b -inform DER -print_certs -out new.pyatilistnik.ru.pem

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

Ну, а дальше уже по инструкции сверху. Если у вас выскочит ошибка, по типу
C:\AMD64-Win64OpenSSL-0_9_8g>openssl.exe rsa -in new.pyatilistnik.ru.pem -out new. 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.
Первое это crt в der
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

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

Для чего нужно преобразование сертификатов
Тут ответ, очень простой, все дело в формате работы с ними у каждой программы, будь то IIS или же Apache сервер. Более подробно про виды сертификатов и их назначение, я вам посоветую прочитать вот эту статью.
Давайте я подробнее покажу как выглядит ошибка импортирования сертификата. Во первых когда вы получаете от comodo ваш архив с сертификатами, то там будет два файла:
- с расширением .ca-bundle
- с расширением .crt

Попытавшись на сервере IIS произвести их импорт вы увидите вот такую картинку.
Сертификат не содержит закрытого ключа

И тут нет ничего удивительного, так как это не pfx архив, то в нем нет нужного приватного ключа. Для его получения придется слегка постараться.
Экспорт сертификата Windows
Давайте теперь проделаем процедуру обратного порядка. Первым делом я произведу экспорт сертификата из графического интерфейса. В оснастке “Сертификаты” найдите нужный вам. Щелкните по нему правым кликом и выберите “Все задачи – Экспорт’.

У вас откроется окно мастера экспорта сертификатов, нажимаем далее.

Если есть возможно и закрытый ключ экспортируемый, то можете выставить режим “Да, экспортировать закрытый ключ”.

Вам будет предложено выбрать формат выгрузки, тут могут быть расширения cer DER, cer Base-64, p7b, PFX. Так как у меня сертификат Wildcard, то я могу выгрузить в “Файл обмена личной информацией -PKCS # 12(.PFX)”. Если вы планируете после экспорта удалить из личного хранилища ваш сертификат, то можете тут выставить соответствующую галку. Так же может выгрузить все расширения, после чего нажимаем далее.

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

В следующем окне мастера по экспорту сертификатов, вы задаете его имя и где он будет сохранен.

Нажимаем далее.

Завершаем процедуру экспорта pfx архива из нашего хранилища сертификатов.

Экспорт успешно выполнен.

Теперь давайте произведем экспорт с помощью утилиты certutil. Перед тем, как это сделать, нам необходимо вычислить серийный номер сертификата.Для этого выполните команду:
Находим поле “Серийный номер” у нужного сертификата и копируем его.

Далее пишем команду для экспорта сертификата;
certutil -exportPFX -p “12345678” my 790000fa279f2bd96421c6e2bc00010000fa27 export-cert-2.pfx
Все успешно отработало.

На выходе я получил файл export-cert-2.pfx. Открыть архив с сертификатом вы легко сможете через утилиту keytool или Key Store Explorer.

На этом у меня все, мы с вами разобрали алгоритм и методы по импортированию и экспортированию сертификатов в операционной системе Windows. остались вопросы или пожелания, то я жду их в комментариях. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Как создать. ca-bundle
Если у вас нет в наличии отдельного файла с расширением .ca-bundle, то создать его очень просто. Вам должны были прислать несколько файлов в формате crt, от корневого и промежуточного центра сертификации. Посмотреть это можно в общем crt файле на вкладке “Путь сертификации”.

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

Вот так выглядит команда по созданию .ca-bundle файла.
copy intermediate_pem_thawte_sslwildcard_1.crt + root_pem_thawte_sslwildcard_1.crt pyatilistnik.ca-bundle







