2017-03-04 67 views
1

我開發an R packagegetting reports發展[R包和需要處理「SSL連接錯誤」

httr::GET('http://gdc-api.nci.nih.gov/status') 
Error in curl::curl_fetch_memory(url, handle = handle) : SSL connect error 

我已經看到了一些不同的方法來處理這個問題,但我不能因爲我無法重現該問題,所以在本地進行測試。在R中有沒有推薦的方法來處理這個問題,而不需要用戶安裝新的系統庫(一堆蠕蟲)?

回答

1

這個問題很可能是由於客戶端過時的TLS支持所致,因爲禁用對等證書和主機名驗證不起作用。

服務器的快速scan顯示它們僅支持TLS 1.2連接,因此客戶端必須支持此功能(SSLv3,TLS 1.0或TLS 1.1將不起作用)。這意味着需要OpenSSL 1.0.1或更高版本。

不幸的是,在代碼中沒有任何東西可以解決這個問題。他們需要確保他們的cURL庫是用現代TLS支持構建的。

sslscan https://gdc-api.nci.nih.gov 
Version: 1.10.5-rbsec 
OpenSSL 1.0.2k 26 Jan 2017 

Testing SSL server gdc-api.nci.nih.gov on port 443 

    TLS renegotiation: 
Session renegotiation not supported 

    TLS Compression: 
Compression disabled 

    Heartbleed: 
TLS 1.0 not vulnerable to heartbleed 
TLS 1.1 not vulnerable to heartbleed 
TLS 1.2 not vulnerable to heartbleed 

    Supported Server Cipher(s): 
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384  
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256  

    Preferred Server Cipher(s): 
TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 
+0

在某些系統上,至少看起來libcurl可能還需要更新。 – seandavi

+1

是的,對不起,如果不明確。 libcurl也需要更新,以便了解後面的TLS協議以及如何將它們與更新的SSL庫一起使用。 – drew010