Конвертирование сертификатов в другой формат

25 март 2025, Вторник
49
0
0 0
Конвертировать сертификаты из одного формата в другой можно с помощью различных инструментов. OpenSSL - это один из самых популярных и мощных инструментов для работы с криптографическими данными, но кроме него можно использовать: Keytool (Java Keystore), PowerShell (Windows), GnuTLS.  Ниже приведены основные форматы сертификатов и примеры конвертации между ними.

Основные форматы сертификатов

Формат
Расширения
Описание
PEM.pem, .cer, .crt, .keyBase64-кодированный текст (чаще всего используется в Linux), может включать сертификат и ключ
DER.der, .cerБинарный формат
PKCS#7.p7b, .p7c, .pkipathСодержит только цепочку сертификатов, без закрытого ключа
PKCS#12.pfx, .p12Содержит сертификаты и закрытый ключ в одном файле. Может шифроваться паролем.
JKS.jksJava KeyStore (только для Java)

Примеры конвертации с помощью OpenSSL

Убедитесь, что у вас установлен OpenSSL, это можно сделать при помощи команды:
openssl version

1. DER → PEM

openssl x509 -inform der -in certificate.der -out certificate.pem

2. PEM → DER

openssl x509 -outform der -in certificate.pem -out certificate.der

3. PEM → PFX (PKCS#12)
Включая сертификат, цепочку сертификатов и закрытый ключ

openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.pem -certfile chain.pem
chain.pem — необязательный файл с цепочкой доверия.

 4. PFX (PKCS#12) → PEM
Извлечь сертификат и закрытый ключ

openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes
-nodes` — означает "без шифрования", т.е. закрытый ключ будет без пароля.

5. PEM → P7B (PKCS#7)
Добавить несколько сертификатов, но без ключей

openssl crl2pkcs7 -nocrl -certfile certificate.pem -certfile intermediate.pem -out certificate.p7b


6. P7B → PEM

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem


 7. Извлечь закрытый ключ из PEM

openssl rsa -in certificate.pem -out private.key


8. Извлечь только сертификат из PEM (если в файле есть и ключ и сертификат)

openssl x509 -in certificate.pem -out cert_only.pem


Проверить содержимое PEM-файла:
openssl x509 -in certificate.pem -text -noout

Проверить содержимое PFX-файла:
openssl pkcs12 -info -in certificate.pfx

2. Конвертация с помощью Keytool (Java Keystore)

JKS → PKCS#12
keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -deststoretype PKCS12

PKCS#12 → JKS
keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -destkeystore keystore.jks


3. Конвертация с помощью PowerShell (Windows)

Из CER в PFX
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2  
$cert.Import("C:\cert\certificate.cer")  
$certBytes = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx, "password")  
[System.IO.File]::WriteAllBytes("C:\cert\certificate.pfx", $certBytes)  

4. Конвертация с помощью GnuTLS

Из PEM в DER

certtool -i --infile certificate.pem --outfile certificate.der --outder
Комментарии:
Прокомментировать
При использовании материалов ссылка на сайт UserMan.ru обязательна.
Политика конфиденциальности
Пользовательское соглашение
UserMan.ru © 2017-2025
Соцсети: VK