cURL с сертификатом PKCS # 12 в сценарии bash

я должен подключиться к веб-сервису, где необходим сертификат pkcs12. идея заключалась в том, чтобы использовать завиток в сценарии bash (в частности, в OS X).

я узнал, что одна из немногих вещей, которые ломают, не может сделать в общении, обрабатывает сертификаты pkcs12 (.p12). какие у меня варианты?

Я прочитал, что преобразование сертификата в формат PEM будет работать (с использованием openssl), однако я не знаю, как сказать завихрение, что он получает PEM и должен связываться с веб-сервисом, запрашивающим сертификаты PKCS12.

преобразование pkcs12 в pem было бы выполнено так (например), это сработало для меня, однако я не использовал их с curl:

openssl pkcs12 -in mycert.p12 -out file.key.pem -nocerts -nodes
openssl pkcs12 -in mycert.p12 -out file.crt.pem -clcerts -nokeys

любые подсказки? или, любые альтернативы скручиванию? решение должно быть основано на командной строке.

Ответ 1

Я думаю, что вы все решили, но у меня была та же проблема. Я отвечаю за свое решение.

Если у вас есть.p12 файл, ваш подход правильный. Прежде всего, вы должны получить сертификат и ключ, отделенные от файла p12. Например, если у вас есть файл mycert.p12

openssl pkcs12 -in mycert.p12 -out file.key.pem -nocerts -nodes
openssl pkcs12 -in mycert.p12 -out file.crt.pem -clcerts -nokeys

Затем вам нужно позвонить на ваш адрес. Например, предположим, что вы хотите получить wsdl определенного веб-сервиса

curl -E ./file.crt.pem --key ./file.key.pem https://myservice.com/service?wsdl

Если файлы file.crt.pem и file.key.pem находятся в вашей рабочей папке, "./" является обязательным.

Ответ 2

Проверьте, есть ли у вас более новый локон. Более новые версии могут работать с PKCS12 напрямую.

curl --cert-type P12 --cert cert.p12:password https://yoursite.com