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
- это пароль из .