本文主要和大家分享PHP中Curl https跳過ssl認證報錯問題分析及解決方法,希望能幫助大家。
function get($url = '', $cookie = ''){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 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,'https://wx.qq.com'); } curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $output = curl_exec($ch); if ( curl_errno($ch) ) return curl_error($ch); curl_close($ch); return $output; }
上面方法是用戶curl發起https請求的功能,CURLOPT_SSLVERSION項是規定ssl協定版本的,網路上的程式碼很多都說可以設定成1/2/3但是我測試的結果如下:
#設定成1時在php 5.2.11版本中會有如下報錯:
“error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)” ## ₀的原因是你的php中openssl的版本過低解法是升級你的php到5.3.60(具體是高於哪個版本我沒有測試,應該只要openssl版本大於0.9.8版本就可以的)
Linux環境報錯:"SSL version range is not valid.”
Windows環境報錯:"OpenSSL was 79 #SL」 ## 這個應該比較容易理解就是SSL協定的版本號碼已經無效
Windows環境報錯:」Unknown SSL protocol error in connection to login.wx.qq.com:443 」
出現這個錯誤的原因網上查資料之後我認為是由於SSLV2所以微信33不再使用SSLV2和SSLV3協定版本,所以我們設定成3時會出現錯誤。
function get($url = '', $cookie = ''){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 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,'https://wx.qq.com'); } curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $output = curl_exec($ch); if ( curl_errno($ch) ) return curl_error($ch); curl_close($ch); return $output; }
此處報錯的原因是你的php中openssl的版本過低解決辦法是升級你的php到5.3.60(具體是高於哪個版本我沒有測試,應該只要openssl版本大於0.9.8版本就可以的)
Windows built without SSLv2 support”
這個應該比較容易理解就是SSL協議的版本號已經無效
Windows環境報錯:”Unknown SSL protocol error in connection to login.wx.qq.com:443 ”
出現這個數據錯誤的原因是網上查LV2之後我認為存在安全漏洞所以微信已經不再使用SSLV2和SSLV3協定版本,所以我們設定成3時會出現錯誤。
以上是PHP中Curl https跳過ssl認證報錯的詳細內容。更多資訊請關注PHP中文網其他相關文章!