2012-02-24 61 views
1

我想我現在有爲什麼你需要從HTTPS的API,如Facebook拉內容時要麼有SSL證書捆綁把握好。但是我的問題是:爲什麼有時甚至沒有證書而有些人不工作呢? 在我看來,libcurl有辦法獨自解決這個問題。爲什麼發現ssl證書的curl失敗會間歇性地工作?

任何人都知道爲什麼或如何發生的?任何人都有相同的經歷?

回答

0

捲曲至於SSL證書的行爲取決於CURLOPT_SSL_VERIFYPEER選項。 假設你使用PHP,你可以使用函數curl_setopt更改此選項的值。

我有SSL的只有膚淺的認識,但似乎捲曲度以下方式表現: 0表示不檢查,1個檢查證書是否合法,以及2次還檢查,如果證書頒發給正確的主機名檢查。

你可以「關閉煩人的錯誤」通過設置CURLOPT_SSL_VERIFYPEER爲0,但是這意味着你不能肯定,你將有到正確的服務器的連接,因爲任何人都可以spoof the DNS。所以這樣做是非常危險的。

的官方Facebook PHP SDK提供使用CURLOPT_CAINFO自己的證書,但只有當捲曲無法驗證自身的證書。我不知道爲什麼facebook sdk的開發者會做這個條件;也許是因爲閱讀證書可能很昂貴。

+0

您好,感謝這一點。 我想我沒有正確解釋自己。我想知道的事實是,如果你保持設置不變,你默認curl會尋找一個SSL證書......有時它不會咳嗽在PHP的錯誤,並沒有任何理由的事情正常工作。 我想我的問題是:爲什麼它只是偶爾發生?還是僅僅是我? – royco 2012-02-24 16:36:39

+0

我相信這與可用於openssl的所謂「根證書」有關。在debian上,這些存儲在/ usr/lib/ssl/certs中。 – Bart 2012-02-28 13:34:05

+0

graph.facebook.com/的證書由DigiCert(www.digicert.com)頒發。在我的目錄中,我有許多帶有該名稱的證書文件(DigiCert _ *。pem)。移動這些文件似乎並不能阻止識別facebook.com捲曲;也許證書緩存不知何故? – Bart 2012-02-28 13:39:50