2017-07-27 147 views
0

是的我已經看到了很多關於這個問題,事實上我已經有這個問題,去年解決了它。這次出於某種原因解決方案(添加https://curl.haxx.se/ca/cacert.pem)不起作用。PHP cURL錯誤60

服務器(我公司)是一個node.js的應用程序,我註冊的服務器私鑰,服務器CRT,和根證書和中間證書(我想?),名稱是DigiCertCA.crtTrustedRoot.crt。客戶端是一個創建cURL連接的PHP腳本。在將cacert.pem添加到php.ini後,它一直工作正常。最近我的公司更新了SSL證書,並且大約在同一時間客戶端PHP腳本(另一家公司)被從dev移到生產服務器。然後SSL再次爆發。

使用chrome(安全https,未損壞)打開時,網站看起來很好。這裏是PHP腳本,簡化來演示問題。我嘗試通過php.ini和curl_setopt添加cacert.pem,但沒有成功。這是我的地方發展機時,Windows 10上運行時XAMPP 5.6.3

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://example.com'); 
curl_setopt($ch, CURLOPT_CAINFO, 'D:/xampp/php/extras/ssl/cacert.pem'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 3); 
$content = trim(curl_exec($ch)); 
if (curl_errno($ch)) { 
    $content = 'ERROR -> ' . curl_errno($ch) . ': ' . curl_error($ch); 
} 
curl_close($ch); 
print $content; 

錯誤消息:

60: SSL certificate problem: unable to get local issuer certificate 

附加信息:

生產PHP腳本錯誤消息是不同的實際上,它說

curl: (60) Peer's Certificate issuer is not recognized. 

我也嘗試使用curl來接受使用我公司的證書SS其他子域,他們都給予了同樣的錯誤60.雖然訪問https://twitter.com是OK

+0

[cURL錯誤60:SSL證書:無法獲取本地頒發者證書]的可能重複(https://stackoverflow.com/questions/29822686/curl-error-60-ssl-certificate-unable-to-get -local-issuer-certificate) –

+0

'curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false);'嘗試一次 –

+0

@仍然死不是一個選項,我不想關閉驗證器,因爲這會使https無用 – iceman2992

回答

1

你一個錯誤,我認爲

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

你卻把這個true,所以它似乎是問題

+0

那不解決我的問題,它只是關閉證書驗證 – iceman2992

+0

當你刪除curl_setopt($ ch,CURLOPT_CAINFO,'D:/xampp/php/extras/ssl/cacert.pem')會發生什麼?從代碼? –

+0

什麼都沒有,與以前相同的錯誤60,我已經添加了額外的信息到我的問題 – iceman2992