php curl 不验证ssl,PHP Curl https跳过ssl证书认证报错记录及解决
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協(xié)議版本號
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發(fā)起https請求的功能,CURLOPT_SSLVERSION項是規(guī)定ssl協(xié)議版本的,網(wǎng)上的代碼很多都說可以設置成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版本就可以的)
設置成2時會有如下報錯:
Linux環(huán)境報錯:”SSL version range is not valid.”
Windows環(huán)境報錯:”O(jiān)penSSL was built without SSLv2 support”
這個應該比較容易理解就是SSL協(xié)議的版本號已經(jīng)無效
設置成3時會有如下報錯:
Linux環(huán)境報錯:”Encountered end of file”.
Windows環(huán)境報錯:”Unknown SSL protocol error in connection to login.wx.qq.com:443 ”
出現(xiàn)這個錯誤的原因網(wǎng)上查資料之后我認為是由于SSLV2和SSLV3存在安全漏洞所以微信已經(jīng)不再使用SSLV2和SSLV3協(xié)議版本,所以我們設置成3時會出現(xiàn)錯誤。
希望與廣大網(wǎng)友互動??
點此進行留言吧!
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的php curl 不验证ssl,PHP Curl https跳过ssl证书认证报错记录及解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 7.2 兼容5.5吗,PHP5.
- 下一篇: java amp amp 怎么用,ja