如何使用PHP HTTP客户端执行基于证书的身份验证

时间:2011-03-07 08:26:37

标签: php rest certificate restful-authentication authentication

我需要从PHP访问RESTful Web服务(目前只有GET)。该服务只能通过HTTPS使用有效的客户端证书进行访问。

我发现了大量基于PHP的基本身份验证示例,但对于客户端基于证书的HTTP身份验证却没有。是否有PHP HTTP客户端也可以向服务器发送证书?

目前我正在使用外部应用程序(wget),但这是相当缓慢和hacky。

1 个答案:

答案 0 :(得分:9)

基于证书的身份验证不是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);

有关选项的更多信息,请参阅the manual page of curl_setopt