2015-08-27 2 views
13

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

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

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

превращение PKCS12 в PEM будет сделано, как это (например), он работал на меня, но я не успешно использовали их с завитком:

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

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

ответ

28

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

Если у вас есть .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 находятся в рабочей папке «./» является обязательным.

+3

Для меня это сработало: curl -k --cert ./file.crt.pem --cert-type PEM --key ./file.key.pem - ключ типа PEM --pass «» – Kartins

+4

Просто сообщите здесь, что если вы используете 'curl -k', как Kartins, используемые в комментарии выше, вы ** отключите ** https-проверки. – user2599522

Смежные вопросы