Конвертирование сертификатов при помощи OpenSSL

05 апрель 2018, Четверг
29 926
1
0 0
Как только возникает необходимость выполнить конвертирование одного формата сертификата в другой, каждый раз возникает вопрос: "Как это сделать?". Наиболее удобно для этого использовать OpenSSL (openssl.org), этот сайт содержит исходные коды, если нет желания выполнять компилирование исходных кодов, то можно взять скомпилированный вариант OpenSSL, его можно скачать по ссылке: https://slproweb.com/products/Win32OpenSSL.html. Необходимость выполнять конвертирование возникает, если имеющийся формат сертификата не подходит для ПО или оборудования.
Итак, если необходимо выполнить конвертирование одного формата сертификата в другой, то надо скачать и установить OpenSSL на локальном компьютере. Далее, рекомендуется скопировать с папку с OpenSSL имеющиеся файлы сертификата, для которого необходимо выполнить конвертирование, открыть командную строку и перейти в папку с установленным OpenSSL. 

Рекомендуется запускать командную строку с от имени администратора (Run As Administrator), это позволит избежать возможных ошибок, если на машине включен UAC.

Часто используемые форматы сертификатов:
PEM - очень часто используется в Linux based  системах или оборудовании, файлы такого формата сертификата используют расширение .cer, .crt, and .pem.
DER - двоичная формат сертификата. DER формат не содержит текста "BEGIN CERTIFICATE/END CERTIFICATE", формат DER чаще всего использует расширение .der
PKCS#7 или P7B - эти форматы сертификата хранятся в формате Base64 ASCII и чаще всего имеют расширения файлов .p7b или .p7c.  Файл P7B, кроме самого сертификата содержит цепочку сертификатов (открытых ключей) выпускающих центров сертификации (Intermediate CAs). Этот формат поддерживается в Microsoft Windows и Java Tomcat.
PKCS#12 или PFX - эти форматы представляют собой двоичный формат для хранения сертификата сервера, промежуточных сертификатов и закрытого ключа в одном зашифрованном файле. Файлы такого формата сертификата используют расширение .pfx and .p12. PFX файлы обычно используются на windows машинах для импорта/экспорта сертификатов и закрытого ключа.


Для выполнения конвертирования необходимо выполнить одну (или две) команду из списка ниже, в зависимости от исходного формата сертификата и целевого.
Конвертирование PEM в PFX
openssl pkcs12 -inkey privkey.pem -in cert.pem -export -out cert.pfx

Конвертирование x509 в PEM
openssl x509 -in certificate.cer -outform PEM -out certificate.pem 

Конвертирование PEM в DER
openssl x509 -outform der -in certificate.pem -out certificate.der 

Конвертирование DER в PEM
openssl x509 -inform der -in certificate.der -out certificate.pem 

Конвертирование PEM в  P7B
openssl crl2pkcs7 -nocrl -certfile certificate.pem -out certificate.p7b -certfile CACert.cer 

Конвертирование PKCS7 в PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem 

Конвертирование pfx в PEM
openssl pkcs12 -in certificate.pfx -out certificate.pem 

Конвертирование PFX в PKCS#8
Для этого требуется выполнение двух команд

Step 1: Конвертирование PFX в PEM
openssl pkcs12 -in certificate.pfx -nocerts -nodes -out certificate.pem 
Step 2: Конвертирование PEM в PKCS8
openSSL pkcs8 -in certificate.pem -topk8 -nocrypt -out certificate.pk8 

Конвертирование P7B в PFX
Для этого требуется выполнение двух команд

1. Конвертирование P7B в CER
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
2. Конвертирование CER и закрытого ключа в PFX
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile  cacert.cer 
cacert.cer - это файл сертификата выдающего центра сертификации (Intermediate CAs)
Комментарии:
Прокомментировать
  1. Zlata 25 сентября 2020 17:04
    как создать DER сертификат?
При использовании материалов ссылка на сайт UserMan.ru обязательна.
Политика конфиденциальности
Пользовательское соглашение
UserMan.ru © 2017-2024
Соцсети: VK