cURL要求CURLOPT_SSL_VERIFYPEER = FALSE

时间:2013-09-24 02:22:44

标签: php curl ssl https ssl-certificate

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

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

有人有任何想法吗?

3 个答案:

答案 0 :(得分:33)

感谢Dave Chen的建议,我意识到我必须放错了我的证书。此证书由cURL创建者提供:http://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

答案 1 :(得分:2)

如果您使用的是WampServer,请注意:

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

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

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

答案 2 :(得分:1)

从cURL 7.10开始,默认情况下CURLOPT_SSL_VERIFYPEER的值为TRUE。

因此,您可能需要将其显式设置为FALSE,以防止CURL验证证书。