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

发布于 2024-10-20 18:39:26 字数 200 浏览 4 评论 0原文

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

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

现在我正在使用外部应用程序(wget),但这相当慢而且很糟糕。

I need to access a RESTful webservice from PHP (only GET for now). The service can only be accessed over HTTPS with a valid client certificate.

I found plenty of basic auth examples for PHP, but not a single one for client-side cert-based HTTP auth. Is there a PHP HTTP client which can also send certificates to the server?

For now I am using an external application (wget), but this is rather slow and hacky.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

救赎№ 2024-10-27 18:39:26

基于证书的身份验证不是 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 的手册页了解更多信息关于选项。

Certificate-based authentication is not part of HTTP but part of SSL/TLS.

You can use cURL to do such authentication:

$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);

See the manual page of curl_setopt for more information on the options.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文