PHP curl出現SSL certificate problem: self signed certificate in certificate chain

使用PHP curl請求https的時候出現錯誤“SSL certificate problem: self signed certificate in certificate chain”,這種情況是無法驗證客戶端根證書導致,解決辦法如下。

方法一

忽略證書驗證,在curl方法中添加以下代碼即可。

function httpRequest($sUrl, $aHeader, $aData){
        $ch = curl_init();
        if(substr($sUrl,0,5)=='https'){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  // 從證書中檢查SSL加密算法是否存在
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, $sUrl);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($aData));
        $sResult = curl_exec($ch);
        if($sError=curl_error($ch)){
            die($sError);
        }
        curl_close($ch);
        return $sResult;
    }

方法二:

從curl官方網站,下載根證書:cacert.pem ,然後修改php.ini中加入該證書,並重啓web服務。(這個沒試過)

#在php.ini中加入
[SSL]
curl.cainfo = "D:\xampp\php\cacert.pem"
openssl.cafile = "${curl.cainfo}"

 

發佈了97 篇原創文章 · 獲贊 85 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章