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

时间:2018-11-09 07:54:05

标签: php curl ssl-certificate

我创建了一个php-curl文件来从另一台服务器获取API:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://192.168.4.2/sdk_service/rest/users/login/v1.1');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
// curl_setopt($ch, CURLOPT_CAINFO, "C:/xampp/htdocs/curl/cibinong/cacert.pem");
// curl_setopt($ch, CURLOPT_CAPATH, "C:/xampp/htdocs/curl/cibinong/");
$result = curl_exec($ch);
if (curl_error($ch)) {
    echo curl_error($ch);
}
print_r($result);

我收到错误消息:

  

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

帮助我,也许我想念一些东西吗?

2 个答案:

答案 0 :(得分:0)

问题在于您获得了无效的SSL证书,因此您需要关闭一些检查。您可以使用以下选项尝试吗?

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

这将跳过对SSL主机和SSL对等方的验证。因为,在这种情况下,这就是您所需要的。

答案 1 :(得分:0)

您正在使用IP地址访问HTTPS URL,这实际上很少起作用。大多数站点都要求使用SNI名称来获得正确的服务器证书,而且许多CA甚至不向您出售纯IP地址的证书。

与其禁用证书检查,不如考虑使用其“适当”和正式名称访问该服务器,以便服务器知道在TLS握手中提供哪个证书。

如果您确实要连接到该特定IP地址,并且仍然在URL中使用正确的名称,则可以使用CURLOPT_RESOLVE选项。记录在其他CURL选项中。

不要选择禁用证书检查。这是一个糟糕的解决方法,只会永远存在危险,并使您容易受到伤害。