Перетворення 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.


Це EDIT з попередньої версії, де я виконував ці кілька кроків, поки я не зрозумів, що параметр -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. Перший крок запропонує ввести пароль для відкриття PFX.
  2. 2-й крок пропонує вам плюс, а також скласти пароль для ключа.
  3. 3-й крок пропонує вам ввести парольну фразу, яку ви тільки що створили, щоб зберігати розшифровані.
  4. Четвертий розміщує все це в 1 файл.

Тоді ви можете налаштувати HAProxy для використання файлу file.combo.pem.

Причина, через яку вам потрібні два окремі етапи, де ви вказуєте файл із ключем, а інший без ключа, полягає в тому, що якщо у вас є файл, у якому є і зашифрований, і розшифрований ключ, щось на зразок HAProxy все ще пропонує вам ввести парольну фразу, коли він це використовує.


Я не витрачав час, щоб глибоко ознайомитись з openssl, але конверсія pem не включала приватний ключ. Редагування надало детальну інформацію про те, як об’єднати cert і key в один файл pem, саме те, що мені потрібно.
ebt

У системах Windows використовується тип type замість cat
hupseb

У Windows цю версію OpenSSL легко використовувати для таких речей: slproweb.com/products/Win32OpenSSL.html
Helge Klein

Наведені вище кроки добре спрацювали з перетворенням PFX в PEM. Мені довелося зробити ще один крок: відкрити файл NoEM PEM у текстовому редакторі та перемістити останній сертифікат у ланцюжку у верхню частину файлу. В іншому випадку nginx видасть помилку зі скаргами на certs і відмовиться їх використовувати.
EugeneRomero

У такому випадку ви можете переупорядкувати команду cat, щоб поставити її першою. наприклад: cat file.key file.nokey.pem> file.combo.pem Якщо тільки файл file.key не має декількох у неправильному порядку. Але в будь-якому випадку, ви, ймовірно, можете перевпорядкувати речі програмно.
користувач2415376

11

Незважаючи на те, що інші відповіді є правильними та всебічно поясненими, я виявив деякі труднощі, розуміючи їх. Ось метод, який я використав ( взято звідси ):

Перший випадок: конвертувати файл 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.