2017-02-12 23 views
0

因此,我對網絡開發很陌生,因此對我一無所知。有一次我調用函數cURL SSL問題:無法識別本地發行人

SSL problem: can't identify local issuer 

保存圖像或檢索用戶的Facebook圖片:我得到這個錯誤

file_get_contents() 

我所做的是:

  • 我讓我的網站在Azure上運行* .azurewebsites.com
  • 我添加了我的自定義域和ssl證書,這兩個證書都是從GoDaddy購買的
  • 我創建使用OpenSSL證書籤名請求(CSR)(其中GoDaddy的問)在我的Mac
  • 與它簽署並下載它得到.p7b文件和.crt文件
  • 我加入了.CRT文件Azure和一切正常,我的自定義域現在有旁邊的鎖是

因此,這些步驟後,與Facebook登錄了這個錯誤還讓我做了一個臨時的解決辦法:

curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false); 

這是當然不推薦,但它可以讓我來測試網站的其他部分。錯誤仍然發生,但僅在調用file_get_contents()時纔會發生。我已經嘗試了這些修補程序,從我見過的四處搜尋:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/cacert/cacert.pem"); 

但是沒有骰子。有人能夠準確解釋錯誤意味着什麼,也可以解決它嗎?那簡直太好了。此外,這可能是由於使用OpenSSL創建我的證書籤名請求...不確定。請確認。

謝謝!

+0

爲什麼你在獲取文件時使用ssl pem?爲什麼不使用https://它應該已經安裝在服務器上。我想知道你爲什麼這樣做? – unixmiah

+0

所以我使用Parse Server PHP SDK,我只是把curl_setopt($ ch,CURLOPT_CAINFO,getcwd()。「/cacert/cacert.pem」);在ParseClient.php中,當我獲取文件時,我正在執行file_get_contents($ _FILES ['userImg'] ['tmp_name'])或file_get_contents('https://graph.facebook.com/'。$ user ['id ']。'/ picture?type = large&return_ssl_resources = 1') – adambargh

回答

0

curl_setopt標誌只適用於您傳遞給這些調用的處理函數。 file_get_contents不知道CURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOST標誌。

更改file_get_contents來捲曲調用。

+0

所以你想讓我創建另一個函數來模仿file_get_contents? – adambargh

+0

不創建,使用現有的。 –

+0

你能再細說一下嗎?我不熟悉php和curl – adambargh

相關問題