PHP curl 错误 60

标签 php ssl curl

是的,我看到了很多关于这个的问题,事实上我已经遇到了这个问题并在去年解决了它。这次由于某种原因,解决方案(添加 https://curl.haxx.se/ca/cacert.pem )不起作用。

服务器(我公司的)是一个 node.js 应用程序,我注册了服务器私钥、服务器 crt 以及根证书和中间证书(我想?),名称是 DigiCertCA.crtTrustedRoot.crt。客户端是建立 cURL 连接的 PHP 脚本。在我将 cacert.pem 添加到 php.ini 后,它一直运行良好。最近,我的公司更新了 SSL 证书,大约在同一时间,客户端 PHP 脚本(另一家公司的)从开发人员转移到生产服务器。然后 SSL 又坏了。

用 chrome 打开时网站看起来很好(安全 https,未损坏)。这是 PHP 脚本,经过简化以演示问题。我尝试通过 php.ini 和 curl_setopt 添加 cacert.pem,但没有成功。这是在我的本地开发机器上运行的,Windows 10 和 xampp 5.6.3

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com'); 
curl_setopt($ch, CURLOPT_CAINFO, 'D:/xampp/php/extras/ssl/cacert.pem');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
$content = trim(curl_exec($ch));
if (curl_errno($ch)) {
    $content = 'ERROR -> ' . curl_errno($ch) . ': ' . curl_error($ch);
} 
curl_close($ch);
print $content;

错误信息:

60: SSL certificate problem: unable to get local issuer certificate

附加信息:

生产 PHP 脚本的错误消息实际上是不同的,它说

curl: (60) Peer's Certificate issuer is not recognized.

我还尝试使用 curl 使用我公司的证书访问其他子域,它们都给出相同的错误 60。访问 https://twitter.com 是可以的

最佳答案

我觉得你搞错了

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

你保持了这个true,所以这似乎是问题所在

关于PHP curl 错误 60,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45344114/

相关文章:

ios - Xamarin IOS - HttpClient - 在一台 iPad 而不是另一台 iPad 上工作的 API

ssl - 证书吊销如何与中间 CA 一起使用?

email - 使用 libcurl 列出 IMAP 收件箱

macos - curl -i 和 curl -I 返回不同的结果

php - 尝试使用 Codeception 和 Yii2 接受 native js 弹出窗口时出错

php - 多次准备一个语句不好吗?

php - 微软图形 API - AADSTS90094 : The grant requires admin permission

php - 需要帮助隐藏一些代码

java - 无法通过 SSL 连接访问 Nexus GUI

php - curl 跨源请求需要用户代理才能工作吗?