我需要从 PHP 访问 RESTful web 服务(目前仅 GET)。只能使用有效的客户端证书通过 HTTPS 访问该服务。
我发现了很多 PHP 的基本身份验证示例,但没有找到一个用于客户端基于证书的 HTTP 身份验证的示例。是否有 PHP HTTP 客户端也可以向服务器发送证书?
目前我正在使用外部应用程序 (wget),但这相当缓慢且不可靠。
最佳答案
基于证书的身份验证不是 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
有关选项的更多信息。
关于php - 如何使用 PHP HTTP 客户端执行基于证书的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5217409/