在 Windows 10 64 位下基于 Yii 2 的 HTTP 客户端扩展,请求https,报错:”Curl error: #60 – SSL certificate problem: unable to get local issuer certificate”的解决

1、基于 Yii 2 的 HTTP 客户端扩展,请求https,报错:”Curl error: #60 – SSL certificate problem: unable to get local issuer certificate”,如图1

图1

2、通过应用组建配置客户端,删除 ‘transport’ => ‘yii\httpclient\CurlTransport’ 此项配置,如图2

图2

3、基于 Yii 2 的 HTTP 客户端扩展,请求https,正常,如图3

图3

4、查看文档:https://github.com/yiisoft/yii2-httpclient/blob/master/docs/guide-zh-CN/usage-transports.md ,CurlTransport可支持高级功能,例如批量请求(因此,由于有批量请求的需要,必须配置客户端使用的传输方式为CurlTransport),如图4

图4

5、打开网址:https://curl.haxx.se/docs/caextract.html ,在这里下载并提取cacert.pem(一个干净的文件格式/数据),复制至:C:\php-7.1.12\extras\ssl\cacert.pem,如图5

图5

6、编辑 php.ini,修改 ;curl.cainfo = 为 curl.cainfo = “C:\php-7.1.12\extras\ssl\cacert.pem”,重启PHP,如图6

图6

7、由于为 RESTful 应用,Cookies已经被禁用,因此 Cookies 仅作为请求头信息传输,如图7

图7

8、通过应用组建配置客户端,恢复 ‘transport’ => ‘yii\httpclient\CurlTransport’ 此项配置,请求https,正常,如图8

图8

9、查看 Debug 的日志信息,Cookie的设置符合预期,如图9

Cookie: login_chinamcloud_id=13980074657; login_chinamcloud_tid=c7a8106ea2da1d5d5c01a13234c69ea8

图9

永夜