php中的https怎么利用旋度进行访问

介绍

本篇文章为大家展示了php中的https怎么利用旋度进行访问,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

代码如下:


/* *
, *卷曲后
, *
, * @param ,string url
, * @param ,array ,数据
, * @param ,int ,,,请求超时时间
, * @param ,bool ,,HTTPS时是否进行严格认证
, * @return 字符串
, */,
函数curlPost (url, data=https://www.yisu.com/zixun/array美元(),超时=30美元,美元CA=true) {

,,,$ cacert=getcwd ()。& # 39;/cacert.pem& # 39;;//CA根证书,
,,,$ SSL=substr ($ url 0 8)==癶ttps://"吗?真的,假的,,

,,,$ ch=curl_init (),,
,,,curl_setopt ($ ch CURLOPT_URL $ url),,
,,,curl_setopt ($ ch CURLOPT_TIMEOUT超时美元),,
,,,curl_setopt ($ ch CURLOPT_CONNECTTIMEOUT timeout-2美元),,
,,,如果(SSL和美元,CA){,美元
,,,,,,,curl_setopt (ch美元,CURLOPT_SSL_VERIFYPEER,真的),,,//只信任CA颁布的证书,
,,,,,,,curl_setopt ($ ch CURLOPT_CAINFO cacert美元);//CA根证书(用来验证的网站证书是否是CA颁布),
,,,,,,,curl_setopt (ch美元CURLOPT_SSL_VERIFYHOST 2);//检查证书中是否设置域名,并且是否与提供的主机名匹配,
,,,}else if ($ SSL,,CA){,美元!
,,,,,,,curl_setopt ($ ch CURLOPT_SSL_VERIFYPEER假);//信任任何证书,
,,,,,,,curl_setopt (ch美元CURLOPT_SSL_VERIFYHOST 1);//检查证书中是否设置域名,
,,,},
,,,curl_setopt (ch美元,CURLOPT_RETURNTRANSFER,真的),,
,,,curl_setopt ($ ch CURLOPT_HTTPHEADER数组(& # 39;期望:& # 39;));//避免数据数据过长问题,
,,,curl_setopt (ch美元,CURLOPT_POST,真的),,
,,,curl_setopt ($ ch CURLOPT_POSTFIELDS $ data),,
,,,//curl_setopt ($ ch CURLOPT_POSTFIELDS http_build_query(数据)美元);//数据与URLEncode 

,,,(ret=curl_exec美元ch);,
,,,//var_dump (curl_error (ch)美元),,//查看报错信息,

,,,curl_close (ch);,
,,,返回ret美元;,,,
},,,

如果URL地址是https打头,那就走SSL,否则就走普通的HTTP协议。

是否走https的话就安全了吗?其实SSL也有不同的验证程度。

例如需不需要验证证书中的公用名呢?(顺便说一句:公用名(通用名)一般来讲就是填写你将要申请SSL证书的域名(域)或子域名(子域))。

需要验证主机名吗?

是任何证书都信任呢还是只信任CA颁布的呢?

(我擦嘞,电池快没点了,只捡关键地儿说了——| | |)

如果网站SSL证书买的是CA的(通常比较贵),那么访问时可以使用比较严格的认证,即:

代码如下:


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

如果网站的证书是自己生成的,或者是网上的小机构申请的,那么访问时如果使用严格认证则不会通过,直接返回错误的。(对了,返回错误时可以打印curl_error (ch)查看具体错误信息)。此时可以根据情况通过降低验证程度来保证正常访问,例如:

代码如下:


curl_setopt ($ ch CURLOPT_SSL_VERIFYPEER假);//信任任何证书
curl_setopt (ch美元CURLOPT_SSL_VERIFYHOST 1);//检查证书中是否设置域名(为0也可以,就是连域名存在与否都不验证了)

平时我们使用浏览器访问各个https网站时,有时会遇到证书不受信的提示,其实就是因为这些网站的证书不是正规CA机构颁布的。

市面上各种浏览器中都内置了CA根证书列表信息,访问有CA颁布证书的网站时,会根据根证书验证这些网站的证书,所以就不会有这个提示了。

关于CA根证书文件,其实就是包含了各个主要CA机构的公钥证书,用来验证网站的证书是否是这些机构颁发的。

这里的这个文件是来源于mozilla的源码树,又转换成PEM格式证书文件。(大家可以到这里下载现成的http://curl.haxx.se/ca/cacert。pem)

最后说一个和SSL无关的东西:

代码如下:


curl_setopt ($ ch CURLOPT_HTTPHEADER数组(& # 39;期望:& # 39;));

这个主要是为了解决POST时数据过长问题

上述内容就是php中的https怎么利用旋度进行访问,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

php中的https怎么利用旋度进行访问