一. 起因:
今天用yii框架,請求java接口,始終返回false.
二. 分析歷程:
使用curl_error()方法打印出Peer’s Certificate issuer is not recognized。
翻譯出來的意思是ssl證書未認證通過,證書問題?不細揪,通過結果判斷,就是證書的問題。
不過畢竟是第三方的接口,要解決需要聯系運維,查看證書,還要重新設置證書路徑,很麻煩,不好處理。
附上要設置的(未驗證),供參考
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); curl_setopt($curl,CURLOPT_CAINFO,dirname(__FILE__).'/cacert.pem');
三. 解決辦法
關掉curl對於證書的驗證。不過curl類的封裝是統一的,為了不影響其他的代碼。
php curl關掉ssl驗證:
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//原生 $curl->setOption(CURLOPT_SSL_VERIFYPEER=>0);//YII2
在此過程中還遇到了,對方接口不識別返回的json數據
解決辦法,設置header
$curl->setHeaders(['Content-Type' => 'application/json']);
結果,再次測試,接口通了。
