cURL 需要 CURLOPT_SSL_VERIFYPEER=FALSE

2022-08-30 17:39:17

我在我的本地主机上使用cURL的时间最长,突然间我注意到它不再有效,除非我明确设置了选项,=。CURLOPT_SSL_VERIFYPEERFALSE

我不知道这如何/何时改变,但我使用的是NGINX和PHP,我可以验证这不是特定请求主机的特定问题。我从 和 收到空白响应。https://site1.comhttps://different-site.com

有人有什么想法吗?


答案 1

多亏了Dave Chen的建议,我意识到我一定是把我的证书放错了地方。这个问题由cURL创建者(从Mozilla中提取)提供的这个证书解决了:https://curl.haxx.se/ca/cacert.pem

因此,将此 cacert.pem 文件下载到项目中后,在 PHP 中,您现在可以执行以下操作:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cacert.pem");

或者,可以通过将以下内容添加到php中来全局设置.ini

curl.cainfo=/path/to/cacert.pem

答案 2

如果您使用的是 WampServer,请注意以下几点:

必须将绝对路径放在CURLOPT_CAINFO中,例如:

curl_setopt ($ch, CURLOPT_CAINFO, 'C:\wamp\www\your-project\cacert.pem')

不要使用相对路径:curl_setopt($ch,CURLOPT_CAINFO,'cacert.pem'),因为它不起作用


推荐