2017-03-04 44 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