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

标签 php rest certificate restful-authentication authentication

我需要从 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/

相关文章:

javascript - &(与号)符号未出现在 php 页面中的 GET 参数值中

ios - 两台苹果电脑。一份 iPhone 开发者许可证。可能的?

android - 签名证书和上传证书

ios - ssh xcodebuild 没有签名证书

php - 如何在 Drupal 7 表单中添加图像字段

php - 为什么这不会解码为 html 实体?

delphi - 我可以在Delphi 7中使用PUT和DELETE发送请求吗?

android - 对重新创建的 Activity 实现改造回调的最佳实践?

php - 显示来自 TABLE 的具有不同大小的个体的图像

rest - 对于未导致任何更改的 HTTP PUT REST 调用,我应该返回什么?