У меня есть файл PKCS12, содержащий полную цепочку сертификатов и закрытый ключ. Мне нужно разбить его на 3 файла для приложения. Мне нужно 3 файла (в формате PEM):
- незашифрованный ключевой файл
- файл сертификата клиента
- файл сертификата CA (root и все промежуточные)
Это обычная задача, которую я должен выполнить, поэтому я ищу способ сделать это без какого-либо ручного редактирования вывода.
Я попробовал следующее:
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 сертификатов в цепочке.
Есть ли способ избежать включения атрибутов bag в выходные данные команды pkcs12 или способ, чтобы выходные данные команды x509 включали все сертификаты? Кроме того, если запуск через x509 является самым простым решением, есть ли способ передать выходные данные из pkcs12 в x509 вместо записи файла дважды?
источник