Конвертирование сертификатов - OpenSSL
28 янв. 2025 г.
Конвертирование сертификатов - OpenSSL
Конвертирование сертификатов из одного формата в другой
Существуют различные форматы файлов, призванные хранить сертификаты и приватные ключи для использования в различных ситуациях. Время от времени Вам может потребоваться конвертировать сертификат из одного формата в другой, а для того, чтобы понять, как это делается, для начала следует узнать, чем эти форматы отличаются.
- Privacy Enhanced Mail (PEM) – один из наиболее часто встречающихся форматов, его легко идентифицировать по так называемой «оболочке PEM», находящейся в начале и конце и определяющей содержание. Например:
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
Или
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
Или
-----BEGIN PKCS7-----
-----END PKCS7-----
- PKCS #7 B (P7B) – Расшифровывается как "Cryptographic Message Syntax Standard". Этот формат содержит полную цепочку сертификатов включая корневой, промежуточный и сертификат сервера, на который он выпущен.
- PKCS #12/PFX/P12 – формат "Personal Information Exchange Syntax Standard". Файл .pfx содержит приватный ключ и публичный ключ. Также он может содержать корневой и промежуточный сертификаты. Файлы PFX защищены паролем и могут быть импортированы во многие браузеры и серверы, такие как Связка ключей на Mac OS, IIS, Apache Tomcat и другие.
- Base64 – стандартизированная кодировка файлов .pem, хотя файлы .cer и .crt также могут её использовать.
- DER – Distinguished Encoding Rules; бинарный формат, распространённый среди сертификатов X.509.
Разобраться в конвертировании сертификатов поможет OpenSSL. Обычно она предустановлена на системы GNU/Linux и Mac OS. Для Windows можно скачать Win32 OpenSSL installer.
Помните, очень важно хранить в безопасности приватный ключ Вашего сертификата.
Сертификаты
- Конвертирование из формата PEM в DER:
openssl x509 -outform der -in certificate.pem -out certificate.der
- Перевод из DER в PEM:
openssl x509 -inform der -in certificate.cer -out certificate.pem
- Конвертирование из PEM в формат PKCS7 (P7B):
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
- Конвертирование PKCS #7 (P7B) в формат PEM:
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
Сертификаты и ключи
- Конвертирование сертификата и приватного ключа в формате PEM в PKCS #12 / PFX:
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
- Конвертирование PKCS #7 (P7B) и приватного ключа в PKCS #12 / PFX:
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer;
- Перевод файла PKCS #12 / PFX в формат PKCS #7 (P7B) и получение приватного ключа:
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes