Curl – невозможно подключиться с помощью сертификата p12

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

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

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

До сих пор я пробовал обновлять завиток и 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).

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

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

Например (проверено на 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 пароль из файла .p12 .