找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1210|回复: 1
打印 上一主题 下一主题

php使用curl访问https示例分享

[复制链接]
福多多fluke 该用户已被删除
跳转到指定楼层
楼主
发表于 2018-2-14 06:01:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

3444

主题

3465

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11142
沙发
发表于 2018-2-14 06:01:12 | 只看该作者

如果网站SSL证书买的是CA的(通常比较贵),那么访问时可以使用比较严格的认证,即:
[U]复制代码[/U] 代码如下:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);   // 只信任CA颁布的证书
curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配
如果网站的证书是自己生成的,或者是网上的小机构申请的,那么访问时如果使用严格认证则不会通过,直接返回false。(对了,返回false时可以打印curl_error($ch)查看具体错误信息。)此时可以根据情况通过降低验证程度来保证正常访问,例如:
[U]复制代码[/U] 代码如下:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 检查证书中是否设置域名(为0也可以,就是连域名存在与否都不验证了)
平时我们使用浏览器访问各个https网站时,有时会遇到证书不受信的提示,其实就是因为这些网站的证书不是正规CA机构颁布的。
市面上各种浏览器中都内置了CA根证书列表信息,访问有CA颁布证书的网站时,会根据根证书验证这些网站的证书,所以就不会有这个提示了。
关于CA根证书文件,其实就是包含了各个主要CA机构的公钥证书,用来验证网站的证书是否是这些机构颁发的。
这里的这个文件是来源于mozilla的源码树,又转换成PEM格式证书文件。(大家可以到这里下载现成的http://curl.haxx.se/ca/cacert.pem)
最后说一个和SSL无关的东西:
[U]复制代码[/U] 代码如下:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
这个主要是为了解决POST时数据过长问题
            
            
您可能感兴趣的文章:
  • php抓取https的内容的代码
  • Centos 5下配置https服务器的方法
  • Python使用Socket(Https)Post登录百度的实现代码
  • apache设置自动将http跳转到https的方法
  • 解决file_get_contents无法请求https连接的方法
  • android教程使用webview访问https的url处理sslerror示例
  • nodejs实现HTTPS发起POST请求
  • Apache mod_rewrite实现HTTP和HTTPS重定向跳转
  • 浅析Android系统中HTTPS通信的实现
  • iOS9苹果将原http协议改成了https协议的方法
  • Http与https对比详细介绍
            
  • 回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端