Преобразование pfx в pem с использованием openssl
У меня есть файл client_ssl.pfx, созданный из X509 Certificate Generator.
Как получить root.pem и client_ssl.pem из client_ssl.pfx, используя openssl?
5 ответов
Вы можете использовать инструмент командной строки OpenSSL. Следующие команды должны сделать трюк
openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts
openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts
Если вы хотите, чтобы ваш файл был защищен паролем и т. Д., То есть дополнительные опции.
Вы можете прочитать всю документацию здесь.
Другая перспектива для этого в Linux... вот как это сделать, чтобы полученный файл содержал дешифрованный закрытый ключ, чтобы что-то вроде HAProxy могло использовать его, не запрашивая пароль.
openssl pkcs12 -in file.pfx -out file.pem -nodes
Затем вы можете настроить HAProxy для использования файла file.pem.
Это РЕДАКТИРОВАТЬ из предыдущей версии, где у меня было несколько шагов, пока я не понял, что опция -nodes просто обходит шифрование с закрытым ключом. Но я оставляю это здесь, поскольку это может только помочь с обучением.
openssl pkcs12 -in file.pfx -out file.nokey.pem -nokeys
openssl pkcs12 -in file.pfx -out file.withkey.pem
openssl rsa -in file.withkey.pem -out file.key
cat file.nokey.pem file.key > file.combo.pem
- На первом шаге вам будет предложено ввести пароль для открытия PFX.
- На втором шаге вам будет предложено ввести этот плюс, а также составить ключевую фразу для ключа.
- На третьем шаге вам будет предложено ввести только что созданную парольную фразу для расшифровки.
- Четвёртое объединяет все это в один файл.
Затем вы можете настроить HAProxy для использования файла file.combo.pem.
Причина, по которой вам нужно 2 отдельных шага, когда вы указываете файл с ключом, а другой - без ключа, заключается в том, что если у вас есть файл, который имеет как зашифрованный, так и дешифрованный ключ, то что-то вроде HAProxy все равно предложит вам ввести ключевую фразу, когда он использует это.
Несмотря на то, что другие ответы верны и подробно объяснены, я обнаружил некоторые трудности с их пониманием. Вот метод, который я использовал (взято отсюда):
Первый случай: чтобы преобразовать файл PFX в файл PEM, содержащий как сертификат, так и закрытый ключ:
openssl pkcs12 -in filename.pfx -out cert.pem -nodes
Второй случай: чтобы преобразовать файл PFX в отдельные файлы PEM с открытым и закрытым ключами:
Извлекает закрытый ключ из PFX в файл PEM:
openssl pkcs12 -in filename.pfx -nocerts -out key.pem
Экспортирует сертификат (включает только открытый ключ):
openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
Удаляет пароль (перефразирование) из извлеченного закрытого ключа (необязательно):
openssl rsa -in key.pem -out server.key
Вы можете извлечь ca-bundle, .crt и .key из .pfx, используя это.
# Extracting ca-certs..."
openssl pkcs12 -in ${filename}.pfx -nodes -nokeys -cacerts -out ${filename}-ca.crt
# Extracting key file..."
openssl pkcs12 -in ${filename}.pfx -nocerts -out ${filename}.key
# Extracting crt..."
openssl pkcs12 -in ${filename}.pfx -clcerts -nokeys -out ${filename}.crt
# combine ca-certs and cert files
cat ${filename}.crt ${filename}-ca.crt > ${filename}-full.crt
# Removing passphrase from keyfile"
openssl rsa -in ${filename}.key -out ${filename}.key
Ссылка: https://gist.github.com/mediaupstream/a2694859b1afa59f26be5e8f6fd4806a
Для PFX, заблокированного паролем
Рекомендуется объединить аргумент пароля в одной команде с преобразованием, чтобы избежать ошибок.
вот так: Эта команда предназначена для извлечения закрытого ключа
openssl pkcs12 -in "blablabla.pfx" -out key.key -nodes -passin pass:blablabla
и эта команда для извлечения открытого ключа
openssl pkcs12 -in "blablabla.pfx" -clcerts -nokeys -out crt.crtpem -nodes -passin pass:blablabla