php curl https 问题
高洛峰
高洛峰 2017-04-10 18:01:55
[PHP讨论组]

系统: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获取网页信息 出现的问题 麻烦各位看看

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(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,跳过数字证书的时候,会出现问题

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号