PHP卷曲证书问题,一劳永逸地修复它

时间:2016-10-18 10:42:28

标签: php curl

这不是重复的,我已经阅读了数百篇关于此的帖子和文档,尽管已经测试了几乎所有的测试用例,但仍然无法让cURL在我的本地计算机上工作。

PHP信息

版本:5.5.36

php.ini/etc/php.ini

SSL:是

SSL版本:SecureTransport

此处下载的证书:https://curl.haxx.se/docs/caextract.html

php.ini cURL cainfo setting

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo=/Users/me/cacert.pem

PHP脚本 (请求本身适用于Postman)

curl_setopt($curl, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
// headers include json content type ang GCM authorization key
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, 1);
// json is correct, works via postman with same params
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($fields));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_CAINFO, '/Users/me/cacert.pem'); // it exists

测试用例说明和错误

使用上面的参数

  

SSL:证书验证失败(结果:5)

CURLOPT_SSL_VERIFYPEER设置为false并删除CURLOPT_CAINFO

  

SSL:CA证书集,但证书验证已禁用

仅删除CURLOPT_CAINFO时,将CURLOPT_SSL_VERIFYPEER保留为true

  

SSL:证书验证失败(结果:5)

我已经阅读了cURL issues on Yosemite(我在操作系统ElCapitain上)。如果我curl --cacert /Users/me/cacert.pem https://google.com,从命令行我也得到curl: (51) SSL: certificate verification failed (result: 5)但是,它适用于https://paypal.com

0 个答案:

没有答案