Мне нужно было преобразовать файл .p12 сертификата клиента в .pem, и я сделал это с помощью следующей команды:
openssl pkcs12 -in combo.p12 -out combo.pem
При импорте .p12 в Firefox для тестовых работ меня просят ввести мою парольную фразу, и после ввода моих данных он импортируется, но импорт файла .pem ничего не делает, просто ничего не происходит.
Формат моего созданного сертификата .pem (... для конфиденциальных данных):
Bag Attributes
friendlyName: cn=...
localKeyID: ...
Key Attributes: <No Attributes>
-----BEGIN ENCRYPTED PRIVATE KEY-----
(my encrypted data)
-----END ENCRYPTED PRIVATE KEY-----
Bag Attributes
friendlyName: cn=...
localKeyID: ...
subject=C = ....
issuer=....
-----BEGIN CERTIFICATE-----
(my encrypted data)
-----END CERTIFICATE-----
Источник здесь https://knowledge.digicert.com/solution/SO5437.html говорит, что Firefox должен поддерживать как .pem, так и .p12, а запрос файла импорта Firefox предлагает опции «Файл PKCS12» и «Файл сертификата» в меню фильтра файлов.
Я также могу использовать .p12 с PHP (CURL) и SoapUI, но не с моим файлом .pem (SoapClient).
В качестве альтернативы, если это не проблема, как я могу проверить, в порядке ли мой файл .pem? Я попытался:
openssl verify combo.pem
возвращается
error 20 at 9 depth lookup: unable to get local issuer certificate
error combo.pem: verification failed
Файл pem может содержать разные части сертификатов, поэтому у вас могут быть разные способы его создания. В вашем случае - ошибка, которую вы получаете, означает, что вам не хватает сертификата эмитента для проверки надежности вашего сертификата.
Так что попробуйте добавить полную цепочку в pem следующим образом:
----- НАЧАТЬ ЧАСТНЫЙ КЛЮЧ RSA -----
(Ваш закрытый ключ: your_client.key)
----- КОНЕЦ ЧАСТНОГО КЛЮЧА RSA -----
----- НАЧАТЬ СЕРТИФИКАТ -----
(Ваш основной сертификат SSL: your_client.crt)
----- КОНЕЦ СЕРТИФИКАТА -----
----- НАЧАТЬ СЕРТИФИКАТ -----
(Ваш промежуточный сертификат: your_Issuer.crt)
----- КОНЕЦ СЕРТИФИКАТА -----
----- НАЧАТЬ СЕРТИФИКАТ -----
(Ваш корневой сертификат: Your_Root.crt)
----- КОНЕЦ СЕРТИФИКАТА -----