Skip to content

[Bioc-devel] help with Win10 TSL problem?

4 messages · Egon Willighagen, Neumann, Steffen, Hervé Pagès

#
Hi all,

in the BridgeDbR package I have a TSL issue, just on Windows10 [0]:
Error in function (type, msg, asError = TRUE)  :
  error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert
protocol version
Calls: getDatabase ... getBridgeNames -> curlPerform -> <Anonymous> -> fun
Execution halted

This method is using the download.file() method (see [1]). I am not sure
what this method uses by default. I have been googling and found a number
of suggestions on how to get RCurl to use other SSL version, such as:

CURL_SSLVERSION_TLSv1_2 <- 1Lopts <- RCurl::curlOptions(  verbose =
TRUE, sslversion = CURL_SSLVERSION_TLSv1_2)download.file(url, file,
mode = "wb", .opts=opts)


But I haven't found something that works. Error messages are very cryptic,
and I'm running out of ideas.

Does someone have a suggestion how to debug this? Maybe even have a
solution?

All feedback is very much appreciated!

Egon



0.
https://bioconductor.org/checkResults/release/bioc-LATEST/BridgeDbR/tokay1-checksrc.html
1.https://github.com/bridgedb/BridgeDbR/blob/master/R/getDatabase.R#L23
#
Hi,

can you get me the URL that wants to be downloaded ? 

The "tlsv1 alert protocol version" indicates that the proper 
solution might be to notify the server to reconfigure 
the web server supported TLS versions. 

Yours,
Steffen
On Wed, 2020-03-18 at 19:55 +0100, Egon Willighagen wrote:
https://bioconductor.org/checkResults/release/bioc-LATEST/BridgeDbR/tokay1-checksrc.html
#
The getBridgeNames() function in BridgeDbR uses the following code to 
download the HTML page at https://bridgedb.github.io/data/gene_database/

   url <- "https://bridgedb.github.io/data/gene_database/"
   library(RCurl)
   CURL_SSLVERSION_TLSv1_2 <- 6L
   opts <- curlOptions(sslversion=CURL_SSLVERSION_TLSv1_2)
   site <- basicTextGatherer()
   curlPerform(url=url, writefunction=site$update, .opts=opts)
   html <- site$value()

Not sure why this fails on our Windows builder but if it fails there it 
might fail on other Windows systems. A more portable/reliable way to get 
that HTML document is to use download.file():

   url <- "https://bridgedb.github.io/data/gene_database/"
   destfile <- tempfile()
   download.file(url, destfile)
   html2 <- paste0(readLines(destfile), "\n", collapse="")

   identical(html, html2)  # TRUE

This works everywhere I tested e.g. my laptop, malbec1, merida1, tokay2, 
etc... and doesn't rely on some obscure RCurl/SSL settings.

By doing the same kind of change in their getDatabase() function, the 
BridgeDbR maintainers can get rid of their dependency on RCurl.

Hope this helps,
H.
On 3/18/20 12:20, Neumann, Steffen wrote:

  
    
#
mmh.. for some reason the original post in this thread is only showing 
up now in my mailbox i.e. way after Steffen's answer (and even if 
Steffen's answer includes the original post, I must confess that I 
didn't really pay attention to it)

Anyway, based on that original post I see now that Egon was using 
download.file() but this was not working on Windows 10 so he switched to 
the RCurl solution. And the RCurl solution works on Windows 10 but now 
fails on our Windows builders (Windows Server 2012 R2 Standard). Do I 
get the situation right?

H.
On 3/18/20 14:53, Herv? Pag?s wrote: