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而且我测试的结果如下:

设置成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”

这个应当比较容易理解就是SSL合同的版本号早已无效
设置成3时会有如下报错:
Linux环境报错:”Encounteredendoffile”.
Windows环境报错:”UnknownSSLprotocolerrorinconnectionto:443”
出现这个错误的诱因网上查资料然后我觉得是因为SSLV2和SSLV3存在安全漏洞所以陌陌早已不再使用SSLV2和SSLV3合同版本linux查看ssl版本免费linux主机,所以我们设置成3时会出现错误。
