Преобразование сертификата PKCS#12 в PEM с помощью OpenSSL
У меня есть OpenSSL x64 на Windows 7, который я загрузил из openssl-для-windows в коде Google. Я пытаюсь бежать:
openssl pkcs12 -export -in "path.p12" -out "newfile.pem"
но я получаю ошибку.
unable to load private key
Как извлечь сертификат в PEM из хранилища PKCS#12 с помощью OpenSSL?
5 ответов
попробуй:
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys
openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes
после этого у вас есть:
- сертификат в newfile.ЭЛТ.Пем!--10-->
- закрытый ключ в файл.ключ.Пем!--10-->
чтобы поместить сертификат и ключ в тот же файл, используйте следующий
openssl pkcs12 -in path.p12 -out newfile.pem
Если вам нужно ввести пароль PKCS#12 непосредственно из командной строки (например, скрипт), просто добавьте -passin pass:${PASSWORD}
:
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys -passin 'pass:P@s5w0rD'
вам просто нужно ввести пароль. Вы можете сделать это в той же командной строке, используя следующий синтаксис:
openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password]
затем вам будет предложено ввести пароль для шифрования закрытого ключа в вашем выходном файле. Включите опцию "узлы" в строке выше, если вы хотите экспортировать закрытый ключ незашифрованным (открытым текстом):
openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] -nodes
Подробнее: http://www.openssl.org/docs/apps/pkcs12.html
Если вы можете использовать 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())
это будет работать с .pem
файл, который имеет закрытый ключ и сертификат в том же файле (я пробовал это с Apple Push Notification certificate)
(PushNotif.pem
содержит закрытый ключ и сертификат в одном файле)
$ в OpenSSL pkcs12 из -экспортировать -в PushNotif.PEM-inkey PushNotif.pem-out PushNotif.Р12
Введите пароль для PushNotif.pem:
Введите Пароль Экспорта:
Проверка-Введите Пароль Экспорта:
раз вы вводите свой пароль, вы хорошо идти.
у меня был файл PFX и мне нужно было создать ключевой файл для NGINX, поэтому я сделал это:
openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes
затем мне пришлось отредактировать ключевой файл и удалить все содержимое до -----BEGIN PRIVATE KEY-----
. После этого NGINX принял ключевой файл.