个性化阅读
专注于IT技术分析

Unirest PHP SSL证书问题:无法获取本地颁发者证书

如果收到此错误, 则该消息是非常特定的, 并且当你尝试从不安全的起点访问受保护的资源时, 需要向你的PHP发行版提供有效的证书。

如果你在项目本地工作, 此错误很常见, 你可以阅读以下文章, 以了解如何在Wampp和Xampp中为你的PHP发行版实现有效的SSL证书。

但是, 如果你急于在本地工作, 则可以仅在不休息的情况下禁用对等方的验证, 以忽略此警告。

在执行主代码之前, 将verifyPeer属性设置为false:

注意:在测试之前, 请阅读”为什么会发生”部分及其带来的风险。

<?php
// Disables SSL cert validation temporary
Unirest\Request::verifyPeer(false); 
// Then continue with your work as usual ...
Unirest\Request::get('https://domainwithhttpsconnection/api/dothis');

为什么会这样

libcurl默认执行对等SSL证书验证。这可以通过使用CA证书存储区来完成, SSL库可以使用该证书存储区来确保对等方的服务器证书有效。

如果使用存储中存在的CA签名的证书与HTTPS, FTPS或其他使用TLS的服务器进行通信, 则可以确保远程服务器确实是它声称的服务器。

如前所述, 有两种解决方案:

  1. 告诉cURL不验证对等方。使用libcurl可以使用curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE)禁用此功能;

    使用curl命令行工具, 可以使用-k /-insecure禁用它。

  2. 获取可以验证远程服务器的CA证书, 并在连接时使用正确的选项指出此CA证书以进行验证。对于libcurl黑客:curl_easy_setopt(curl, CURLOPT_CAPATH, capath);

    使用curl命令行工具:–cacert [file]。

但是, 由于我们使用的是unirest, 因此该库的效果与使用verifyPeer(false)方法的第一个选项相同。

你应该使用选项2, 因为那是确保你连接到安全服务器的选项。

赞(0)
未经允许不得转载:srcmini » Unirest PHP SSL证书问题:无法获取本地颁发者证书

评论 抢沙发

评论前必须登录!