При запуске шифрования на сайте, каждый сервер требует отдельный тип файла с сертификатом. Конвертер SSL позволяет быстро и легко заменить файлы 6 форматов — в зависимости от системных требований. Возможные варианты: PEM, DER, PKCS#7, P7B, PKCS#12 и PFX.
Если Ваш сертификат был выдан в формате, который не осблуживается сервером, воспользуйтесь нижеуказанным конвертером:
Самый популярный формат используемый Центрами Сертификации для выписки SSL -сертификатов. В этом формате может выдаваться так же промежуточный или главный CA. Этот тип распознаётся после расширений файла: .pem , .crt , .cer или .key (в файлах содержатся линии BEGIN и END сертификата, ключа и т.д.). Он закодирован в формате Base64.
PEM компатибильный с серверами Apache и подобными. Во время инсталяции большинство серверов требуют отдельные файлы – сертификат(ы) не могут быть соединены с приватным ключём и т.д.
Это бинарная форма PEM. Файлы с этим форматом сертификата могут иметь окончание .der или .cer.
DER в основном используется для установки на серверахJava . Конвертер позволяет изменять сертификат в формат типа.der, для преобразования ключа необходимо использовать команду OpenSSL .
Эти файлы обычно кодируются в формате Base64 и имеют окончание .p7b или .p7c . Файлы P7B содержат линии "-----BEGIN PKCS7-----" и "-----END PKCS7-----". В этом формате нету приватных ключей.
PKCS#7 и P7B используются для инсталяции м.п. на серверах Microsoft Windows и Java Tomcat .
Это бинарный формат, в котором находится сертификат, выданый для домена (интернет-страницы), промежуточные сертификаты и приватный ключ. Файлы обычно имеют окончания .pfx или .p12 . Наиболее часто используются для импорта и экспорта сертификатов, а так же приватного ключа на серверах Windows .
Во время изменения формата PFX на PEM, в одном файле будет размещён сертфикат и приватный ключ. С целью их разделения, необходимо открыть файл в текстовом редакторе, скопировать его в отдельные файлы вместе с линиями: BEGIN i END, а затем записать как sertifikat.cer, CA.cer и ключ приватный.key.
Нажмите , чтобы использовать для конвертации команды OpenSSL.
Пусть сертификат содержится в файле cert.pem . Просмотреть его содержимое можно командой
Openssl x509 -in cert.pem -noout -text Вам будет выдана вся информация о полях сертификата. Вот описание основных полей:
Более подробную информацию можно получить командой man x509 .
Если ваш закрытый ключ хранится в файле privkey.pem , а вы хотите получить файл newkey.pem с другим паролем, вам поможет команда
Openssl rsa -in privkey.pem -des3 -out newkey.pem Вначале вам необходимо ввести текущий пароль, а затем — дважды новый пароль.
Более подробную информацию можно получить командой man rsa .
Формат PKCS#12 — это другой формат хранения вашей ключевой пары, который распознаётся многими броузерами и почтовыми агентами. В файлах PKCS#12 (в зашифрованном виде) хранятся и сертификат, и закрытый ключ, поэтому с этими файлами необходимо быть столь же осторожными, как и с закрытым ключом.
Итак, пусть вы хотите создать файл cert.p12 используя файл сертификата cert.pem и файл закрытого ключа privkey.pem . Это делается командой
Openssl pkcs12 -export -in cert.pem -inkey privkey.pem -name "My Certificate" \ -out cert.p12 Здесь ключ -name задаёт идентификатор вашего сертификата — строку, которая будет отображаться пользовательской программой. Вначале вас попросят ввести текущий пароль закрытого ключа, а потом пароль к PKCS#12-файлу — дважды.
Более подробную информацию можно получить командой man pkcs12 .
S/MIME — это специальный формат для обмена зашифрованными и/или подписанными почтовыми сообщениями. Иногда требуется создавать, читать или проверять правильность таких сообщений средствами OpenSSL.
Предполагается, что ваш закрытый ключ находится в файле privkey.pem , сертификат — в файле cert.pem и сертификат Certification Authority — в файле cacert.pem .
Первый случай: мы хотим поставить цифровую подпись на почтовое сообщение не зашифровывая его. Пусть исходное сообщение находится в файле mail.txt , а полученное S/MIME сообщение нужно поместить в файл out.smime . Это делается командой
Openssl smime -sign -signer cert.pem -inkey privkey.pem -in mail.txt \ -out out.smime
Второй случай: мы хотим проверить подпись на пришедшем к нам S/MIME сообщении, находящемся в файле in.smime:
Openssl smime -verify -in in.smime -CAfile cacert.pem
Более подробную информацию можно получить командой man smime .
Вам просто нужно указать пароль. Вы можете сделать это в той же командной строке со следующим синтаксисом:
Openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:
Затем вам будет предложено ввести пароль для шифрования закрытого ключа в вашем выходном файле. Включите опцию «узлы» в строке выше, если вы хотите экспортировать закрытый ключ незашифрованным (открытым текстом):
Openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass: -nodes
Дополнительная информация: http://www.openssl.org/docs/apps/pkcs12.html
У меня OpenSSL x64 на Windows 7, который я загрузил из openssl-for-windows в Google Code . Я пытаюсь запустить:
Openssl pkcs12 -export -in "path.p12" -out "newfile.pem"
но я получаю сообщение об ошибке.
Unable to load private key
Как извлечь сертификат в PEM из хранилища PKCS # 12 с помощью OpenSSL?
Если вы можете использовать Python, это еще проще, если у вас есть модуль pyopenssl . Вот:
From OpenSSL import crypto # May require "" for empty password depending on version with open("push.p12", "rb") as file: p12 = crypto.load_pkcs12(file.read(), "my_passphrase") # PEM formatted private key print crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey()) # PEM formatted certificate print crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate())
У меня был файл PFX и мне нужно было создать файл KEY для NGINX, поэтому я сделал следующее:
Openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes
Затем мне пришлось отредактировать файл KEY и удалить весь контент до -----BEGIN PRIVATE KEY----- . После этого NGINX принял файл KEY.
Это будет работать с файлом.pem который имеет закрытый ключ и сертификат в том же файле (я попробовал это с сертификатом Apple Push Notification)
(PushNotif.pem содержит закрытый ключ и сертификат в одном файле)
$ openssl pkcs12 -export -in PushNotif.pem -inkey PushNotif.pem -out PushNotif.p12
Введите пароль для PushNotif.pem:
Введите Экспортный пароль:
Проверка - введите Экспортный пароль:
Как только вы введете свой пароль, вам будет хорошо.