【问题标题】:How to perform cert-based auth with a PHP HTTP client如何使用 PHP HTTP 客户端执行基于证书的身份验证
【发布时间】:2011-03-07 16:47:34
【问题描述】:
我需要从 PHP 访问一个 RESTful 网络服务(现在只有 GET)。只能使用有效的客户端证书通过 HTTPS 访问该服务。
我发现了很多 PHP 的基本身份验证示例,但没有一个用于客户端基于证书的 HTTP 身份验证示例。是否有 PHP HTTP 客户端也可以向服务器发送证书?
目前我正在使用外部应用程序 (wget),但这相当慢且很麻烦。
【问题讨论】:
标签:
php
rest
certificate
restful-authentication
authentication
【解决方案1】:
基于证书的身份验证不是 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。