Преобразование pfx в pem с помощью openssl

109

Как создать .pem сертификат CA и сертификат клиента из файла PFX с помощью OpenSSL.

новый мальчик
источник

Ответы:

107

Вы можете использовать инструмент командной строки OpenSSL. Следующие команды должны помочь

openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts

openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts

Если вы хотите, чтобы ваш файл был защищен паролем и т. Д., Есть дополнительные параметры.

Вы можете прочитать всю документацию здесь .

Джей
источник
191

Другая перспектива для того, чтобы сделать это в 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
  1. 1-й шаг запрашивает пароль для открытия PFX.
  2. На втором этапе вам будет предложено ввести это, а также придумать кодовую фразу для ключа.
  3. На третьем этапе вам будет предложено ввести кодовую фразу, которую вы только что создали для сохранения в расшифрованном виде.
  4. 4-й объединяет все в один файл.

Затем вы можете настроить HAProxy для использования файла file.combo.pem.

Причина, по которой вам нужно два отдельных шага, на которых вы указываете файл с ключом, а другой - без ключа, заключается в том, что если у вас есть файл, который имеет как зашифрованный, так и дешифрованный ключ, что-то вроде HAProxy по-прежнему предлагает вам ввести парольную фразу, когда он его использует.

user2415376
источник
Я не тратил время на то, чтобы подробно познакомиться с openssl, но преобразование pem не включало закрытый ключ. В редактировании содержится подробная информация о том, как объединить сертификат и ключ в один файл pem, что мне и нужно.
ebt
В системах Windows используйте type вместо cat
hupseb
В Windows эту версию OpenSSL легко использовать для таких вещей: slproweb.com/products/Win32OpenSSL.html
Helge Klein
Вышеупомянутые шаги хорошо помогли преобразовать PFX в PEM. Однако мне пришлось сделать еще один шаг: открыть файл nokey PEM в текстовом редакторе и переместить последний сертификат в цепочке в начало файла. В противном случае nginx выдаст ошибку, жалуясь на сертификаты, и откажется их использовать.
EugeneRomero
В этом случае вы можете изменить порядок команды cat, чтобы она была первой. например: cat file.key file.nokey.pem> file.combo.pem Если только сам файл file.key не имеет нескольких в неправильном порядке. Но в любом случае вы, вероятно, можете переставить вещи программно.
user2415376 01
12

Несмотря на то, что другие ответы верны и подробно объяснены, я обнаружил некоторые трудности с их пониманием. Вот метод, который я использовал ( взято отсюда ):

Первый случай: чтобы преобразовать файл 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
Мохаммед Нурелдин
источник