2011-04-26 83 views
4

我基本上是試圖做到以下幾點:的libcurl gnutls_handshake()失敗:一個TLS預警警報已經收到

http://curl.haxx.se/libcurl/c/https.html

我有我的Apache服務器設置與mod_ssl的和服務器證書。我加了一行:

curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); 

,也試過:

curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); 

,但我不斷收到錯誤:gnutls_handshake()失敗:一個TLS注意提醒已經收到。

有誰知道誰來解決這個問題或解決它?

+0

當您將該地址指向該地址時,瀏覽器是否會彈出警告? – cnicutar 2011-04-26 17:49:10

+0

是的,你得到的通常警告。 – wonbyte 2011-04-26 17:50:42

回答

2

您收到的「通常」警告意味着沒有一個願意爲其真實性擔保的知名組織(證書頒發機構)。這就是「通常」警告的意思,這就是TLS警告告訴你的。

嘗試將CURLOPT_SSL_VERIFYHOST設置爲0或安裝適當的證書。

+0

設置curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,false); 讓我來繞過現在的檢查。 – wonbyte 2011-05-03 14:08:07

3

我嘗試了上面的解決方案,那對我沒有用。在python中,我嘗試了以下選項來有效地強制SSLv3並禁用TLS。

c.setopt(pycurl.SSLVERSION, pycurl.SSLVERSION_SSLv3) 

在PHP它應該能夠通過設置CURLOPT_SSLVERSION選項3.

3

意識到這個問題是相當老一個答案已經接受來完成,這裏是完美工作的備選答案對我來說,可能是人們來到這裏,從搜索有用:

  • 更換libcurl-gnutlslibcurl-openssl替代。

我注意到證書錯誤只是在程序中使用libcurl而不是在瀏覽器中產生的,所以我認爲GNUTLS在這裏出了問題而不是證書。

這裏是我工作(Ubuntu的12.04 LTS):

$ sudo apt-get remove libcurl4-gnutls-dev 
$ sudo apt-get install libcurl4-openssl-dev 

所依賴的是libcurl中所有的程序開始工作的罰款後,我立刻取代了庫(我也重新編譯程序,以防萬一)。

注意:這個解決方案只會幫助你,如果你使用GNUTLS而不是瀏覽器發出警告。也就是說,我假定證書鏈實際上已正確設置。

相關問題