Как выполнить аутентификацию на основе сертификата с помощью PHP HTTP-клиента - PullRequest
4 голосов
/ 07 марта 2011

Мне нужен доступ к веб-сервису RESTful из PHP (пока только GET). Доступ к службе возможен только через HTTPS с действительным клиентским сертификатом.

Я нашел множество базовых примеров аутентификации для PHP, но ни одного для клиентской аутентификации HTTP на основе сертификатов. Есть ли PHP HTTP-клиент, который также может отправлять сертификаты на сервер?

На данный момент я использую внешнее приложение (wget), но оно довольно медленное и взломанное.

1 Ответ

9 голосов
/ 07 марта 2011

Аутентификация на основе сертификатов не является частью HTTP, но является частью SSL / TLS.

Вы можете использовать cURL для такой аутентификации:

$ch = curl_init('https://example.com/');
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '1');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1');
curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cert/ca.crt');
curl_setopt($ch, CURLOPT_SSLCERT, '/path/to/cert/client-cert.pem');
$response = curl_exec();
curl_close($ch);

См. страницу руководства.curl_setopt для получения дополнительной информации о параметрах.

...