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

use*_*790 4 php authentication rest restful-authentication certificate

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

我发现了很多基本的auth示例用于PHP,但没有一个用于基于客户端证书的HTTP身份验证.是否有PHP HTTP客户端也可以将证书发送到服务器?

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

Gum*_*mbo 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);
Run Code Online (Sandbox Code Playgroud)

有关选项的更多信息,请参见手册页curl_setopt.