Як експортувати ланцюжок сертифікатів CA з PFX у форматі PEM без атрибутів мішка


31

У мене є файл PKCS12, що містить повний ланцюжок сертифікатів та приватний ключ. Мені потрібно розбити його на 3 файли для програми. 3 потрібні мені файли (у форматі PEM):

  • незашифрований файл ключів
  • файл сертифіката клієнта
  • файл сертифіката CA (кореневий та всі проміжні)

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

Я спробував таке:

openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.cer>

Це добре працює, проте вихід містить атрибути мішка, з якими програма не знає, як впоратися.

Після деяких пошуків я знайшов запропоноване рішення продати результати через x509, щоб зняти атрибути мішка.

openssl x509 -in <clientcert.cer> -out <clientcert.cer>

Це працює, але у мене виникає проблема з файлом cacert. Вихідний файл містить лише один з 3-х сертів ланцюга.

Чи є спосіб уникнути включення атрибутів мішка у висновок команди pkcs12, або спосіб, щоб вихід команди x509 включав усі сертифікати? Крім того, якщо запуск через x509 є найпростішим рішенням, чи є спосіб передати вихід з pkcs12 в x509 замість того, щоб виписати файл двічі?

Відповіді:


36

Я вирішив, нарешті, прокласти його через sed.

openssl pkcs12 -in <filename.pfx> -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <cacerts.cer>

Спасибі! Це сьогодні врятувало мене трохи часу! ;-)
Джим П.

Дуже дякую!
PaulJ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.