PHPCurlhttps跳过ssl证书认证报错记录及解决

functionget($url=”,$cookie=”)

$ch=curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//将curl_exec()获取的信息以文件流的方式返回linux查看ssl版本,而不是直接输出。

curl_setopt($ch,CURLOPT_HEADER,0);

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);//对认证证书来源的检测

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);//从证书中检测SSL加密算法是否存在

curl_setopt($ch,CURLOPT_SSLVERSION,2);//设置SSL合同版本号

if($cookie){

curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie);

curl_setopt($ch,CURLOPT_REFERER,”);

curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER

‘HTTP_USER_AGENT’

);

curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);

$output=curl_exec($ch);

if(curl_errno($ch))

returncurl_error($ch);

curl_close($ch);

return$output;

里面方式是用户curl发起https恳求的功能,CURLOPT_SSLVERSION项是规定ssl合同版本的,网上的代码好多都说可以设置成1/2/3而且我测试的结果如下:

PHP Curl SSL_VERIFYPEER设置_PHP Curl https跳过ssl证书认证报错解决_linux查看ssl版本

设置成1时在php5.2.11版本中会有如下报错:

“error:14077458:SSLroutines:SSL23_GET_SERVER_HELLO:reason(1112)”

此处报错的缘由是你的php中openssl的版本过高解决办法是升级你的php到5.3.60(具体是低于那个版本我没有测试linux学习论坛,应当只要openssl版本小于0.9.8版本就可以的)

设置成2时会有如下报错:

Linux环境报错:”SSLversionrangeisnotvalid.”

Windows环境报错:”OpenSSLwasbuiltwithoutSSLv2support”

linux查看ssl版本_PHP Curl https跳过ssl证书认证报错解决_PHP Curl SSL_VERIFYPEER设置

这个应当比较容易理解就是SSL合同的版本号早已无效

设置成3时会有如下报错:

Linux环境报错:”Encounteredendoffile”.

Windows环境报错:”UnknownSSLprotocolerrorinconnectionto:443”

出现这个错误的诱因网上查资料然后我觉得是因为SSLV2和SSLV3存在安全漏洞所以陌陌早已不再使用SSLV2和SSLV3合同版本linux查看ssl版本免费linux主机,所以我们设置成3时会出现错误。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复