php curl https 443,PHP cURL不使用HTTPS

我在我的开发服务器上遇到了问题,其中cURL虽然可以与任何HTTP完美配合,但无法正常使用任何HTTPS – 即使是使用不同协议的完全相同的资源(用于测试我一直在使用http请求google.com)和https).

返回的cURL错误是35:“SSL / TLS握手中某处出现问题.”

我已经梳理了网络和SO以获得解决方案,并且所有这些都已将CURLOPT_SSL_VERIFYPEER设置为false,这不会改变任何内容,或者下载证书文件并将CURLOPT_CAINFO设置为其路径,这也不会改变任何内容.

设置证书时,我按照this tutorial和this tutorial的说明,尝试下载我请求的资源的证书,并下载证书包.

我也尝试过明确地将CURLOP_PORT设置为443.为了彻底解决我的问题,我设置的其他选项是CURLOPT_VERBOSE = true,CURLOPT_RETURNTRANSFER = true,CURLOPT_SSL_VERIFYHOST = 2(我已经尝试了每个组合1和2,VERIFYPEER都是true和假).我也确定在phpinfo()中我有OpenSSL并且它已启用.

我正在使用很多旧代码,这些代码在我的上一个生产服务器上运行得非常好,所以这段代码以前都有用过.但是这个托管是共享托管,我不知道那里的大部分配置.

解决方法:

Curl没有内置的根证书(就像大多数现代浏览器一样).您需要将其明确指向cacert.pem文件:

curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cert/file/cacert.pem');

如果没有这个,curl无法验证通过ssl发回的证书.每次在curl中使用SSL时,都可以使用相同的根证书文件.

标签:php,ssl,https,curl

来源: https://codeday.me/bug/20190917/1808750.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值