Curl-не удается подключиться с помощью сертификата p12

Я пытаюсь собрать некоторые данные с помощью Curl, подключение к службе, которую предоставила какая-то внешняя компания. Они, помимо обращения к себе, прислали меня p12 файл сертификата, который требуется для estabilish соединения.

когда я пытаюсь использовать его с curl, Я получаю следующую ошибку:

#58: not supported file type 'P12' for certificate

до сих пор я пробовал обновлять curl и php-curl. Ничего не изменилось.

мой код:

...
curl_setopt($ch, CURLOPT_SSLCERT, 'cert_path');
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'P12');
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'my_pass');
...

забавно, что этот код работает на наша производственная среда, хотя она не работает на моей локальной машине (Linux Mint 16).

1 ответов


нашел решение.

самый простой способ сделать это, чтобы извлечь .pem ключ и сертификат от .

например (проверено на linux):

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

создаст пару ключ / сертификат в текущем каталоге.

теперь, чтобы использовать его:

curl_setopt($ch, CURLOPT_SSLCERT, 'file.crt.pem');
curl_setopt($ch, CURLOPT_SSLKEY, 'file.key.pem');
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'pass');
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, 'pass');

здесь pass - это пароль из .