首页 > 解决方案 > cURL PHP 和 SSL CA 证书问题

问题描述

我无法在下面的 PHP 代码中使用 CA 证书

$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, true );
curl_setopt($curl,CURLOPT_CAINFO, __DIR__.'/my-cert.cer' );
curl_setopt($curl, CURLOPT_CAPATH, __DIR__.'/my-cert.cer');
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
$curl_response = curl_exec($curl);
if ($curl_response === false) {
    $curl_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    $curl_error = curl_error($curl);
    curl_close($curl);
}
curl_close($curl);
$decoded = json_decode($curl_response);

print_r($decoded);

它总是抛出一个错误

SSL CA 证书有问题(路径?访问权限?)

我查看了其他类似的问题,但所有这些问题都指向/etc/pki/tls/certs未仅针对该代码指定证书。

附言

我已经注释掉了

curl_setopt($curl, CURLOPT_CAPATH, __DIR__.'/var/www/html/my-cert.cer');

现在得到那个错误:

TLS 握手出错,正在尝试 SSLv3...

PS2。

它必须与 NSS 相关,因为我已更新到 nss-3.36.0-9.el6_10.x86_64 并使其工作,但随后部分 Web 应用程序停止正常工作。

标签: phpsslcurl

解决方案


推荐阅读