Преобразование сертификата PKCS # 12 в PEM с использованием OpenSSL
У меня есть 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?
Ответы
Ответ 1
Try:
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys
openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes
После этого у вас есть:
- сертификат в файле newfile.crt.pem
- закрытый ключ в файле newfile.key.pem
Чтобы поставить сертификат и ключ в один и тот же файл, используйте следующие
openssl pkcs12 -in path.p12 -out newfile.pem
Ответ 2
Вам просто нужно указать пароль. Вы можете сделать это в той же командной строке со следующим синтаксисом:
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
Ответ 3
Если вы можете использовать Python, его еще проще, если у вас есть pyOpenSSL
. Вот он:
from OpenSSL import crypto
# May require "" for empty password depending on version
p12 = crypto.load_pkcs12(file("push.p12", 'rb').read()[, password])
# 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())
Ответ 4
Это будет работать с файлом .pem
, который имеет закрытый ключ и сертификат в том же файле (я попробовал это с сертификатом Apple Push Notification)
(PushNotif.pem
содержит закрытый ключ и сертификат в одном файле)
$openssl pkcs12 -export -in PushNotif.pem -inkey PushNotif.pem -out PushNotif.p12
Введите пароль для PushNotif.pem:
Введите Экспортный пароль:
Проверка - введите Экспортный пароль:
Как только вы введете свой пароль, вы пойдете хорошо.
Ответ 5
У меня был файл PFX и мне нужно было создать файл KEY для NGINX, поэтому я сделал это:
openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes
Затем мне пришлось отредактировать файл KEY и удалить все содержимое до -----BEGIN PRIVATE KEY-----
. После этого NGINX принял файл KEY.