2013-06-21 24 views
0

我正在使用cURL使用CURLOPT_POST發送一些數據。相同的代碼工作正常之前,但移動到一個新的服務器後,cURL不再通過https工作。來自其他站點的人(domain.com)向我發送了日誌文件,並且他們沒有收到任何內容。然後,我試圖與curl_error()得到一個錯誤,我面臨一個SSL問題,但不知道如何解決它。移動到新服務器後cURL的SSL問題

代碼:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,'https://track.domain.com/api.php'); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $param); 
curl_exec($ch); 
$error = curl_error($ch); 
curl_close($ch); 

的錯誤是:

SSL certificate problem, verify that the CA cert is OK. Details: 
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 

我搜索了這個在谷歌,但不明白是什麼問題。

我需要我們域的SSL證書嗎?我不確定舊服務器中是否有SSL。你可以從代碼中看到,我不需要回報。那麼,在這種情況下,我是否也應該擁有SSL?

我需要domain.com的證書嗎?

我是否需要聯繫託管公司重新編譯帶有SSL支持的cURL?

任何想法?


注:我不設置CURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOSTfalse希望有一個解決方法。


curl_version():

Array 
(
    [version_number] => 464896 
    [age] => 3 
    [features] => 34333 
    [ssl_version_number] => 0 
    [version] => 7.24.0 
    [host] => i686-pc-linux-gnu 
    [ssl_version] => OpenSSL/0.9.8b 
    [libz_version] => 1.2.3 
    [protocols] => Array 
     (
      [0] => dict 
      [1] => file 
      [2] => ftp 
      [3] => ftps 
      [4] => gopher 
      [5] => http 
      [6] => https 
      [7] => imap 
      [8] => imaps 
      [9] => pop3 
      [10] => pop3s 
      [11] => rtsp 
      [12] => smtp 
      [13] => smtps 
      [14] => telnet 
      [15] => tftp 
     ) 

) 

回答

2

下載Mozilla的bundle文件,將其命名爲mozilla.pem

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true); 
curl_setopt($ch,CURLOPT_CAINFO,'mozilla.pem'); 

的問題是你的CA(證書頒發機構)名單沒有遠程站點證書的頒發者。如果您嘗試連接到具有自簽證書的服務器,則此方法無法解決。

+0

我應該自己做還是最好聯繫託管公司? – enenen

+0

你可以自己做,這是用戶可配置的空間。 – DevZer0

+0

我的網站根本沒有SSL。其他網站有。我發送的數據如「發送並忘記」,即不需要返回。在這種情況下雙方是否都需要SLL?當服務器請求它需要 – enenen

相關問題