php curl https 问题

系统:win7
PHP版本:5.5,5.6,7

php 5.5、7

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);   // 只信任CA颁布的证书
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem'); // CA根证书(用来验证的网站证书是否是CA颁布)
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配

SSL certificate problem: unable to get local issuer certificate

php 5.6 


curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //正常获取

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);   // 只信任CA颁布的证书
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem'); // CA根证书(用来验证的网站证书是否是CA颁布)
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配


SSL certificate problem: unable to get local issuer certificate

PHP CURL GET 通过https获取网页信息 出现的问题 麻烦各位看看

阅读 8.2k
3 个回答

1.http://curl.haxx.se/ca/cacert... 下载CA证书
2.修改 php.ini 的 curl.cainfo
curl.cainfo = /path/to/downloaded/cacert.pem
3.重启 php-fpm

或者
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

如果只是获取其他网站的一些内容,可以不用设置证书,改为false就可以获取了。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

采用 guzzle/http

$client->setDefaultOption('verify', false);

问题解决,但是疑问的是,原生的curl,跳过数字证书的时候,会出现问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题