bioperl-live icon indicating copy to clipboard operation
bioperl-live copied to clipboard

Bio::DB:Taxonomy won't connect to NCBI

Open kastevens opened this issue 2 years ago • 1 comments

When I use Bio:DB:Taxonomy I get the following error:

MSG: Can't query website: 500 Can't connect to eutils.ncbi.nlm.nih.gov:443 STACK: Error::throw STACK: Bio::Root::Root::throw /usr/share/perl5/Bio/Root/Root.pm:449 STACK: Bio::DB::Taxonomy::entrez::_run_query /usr/share/perl5/Bio/DB/Taxonomy/entrez.pm:658 STACK: Bio::DB::Taxonomy::entrez::get_taxon /usr/share/perl5/Bio/DB/Taxonomy/entrez.pm:267

NCBIs response:

have upgraded our web front ends to comply with current security protocols. Fundamentally, all software must be using TLS v1.2 to gain access. According to this thread, https://stackoverflow.com/questions/51110181/perl-lwp-why-does-iosocketssl-use-tls-1-0-while-netssl-uses-tls-1-2, changing the following in your Perl code should work:

replace "use IO::Socket::SSL;" with "use Net::SSL;"

kastevens avatar Aug 20 '21 19:08 kastevens

We don't directly use this module (IO::Socket::SSL) so I am unclear where this would addressed. I think based on the inheritance this is probably best addressed in the module Bio::DB::WebDBSeqI because it uses LWP::UserAgent - I think there is some information here https://stackoverflow.com/questions/51072472/lwpuseragent-change-ssl-implementation. We can likely add this in somewhere in your perl script BEFORE you have indicated use Bio::DB::Taxonomy

BEGIN {
    $ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = 'Net::SSL';
}

But to test can you set this ENV variable before you run your script? eg in your shell on cmdline or in HPC submission script (assuming bash/sh):

export PERL_NET_HTTPS_SSL_SOCKET_CLASS="Net::SSL"
perl your_ncbi_retrieval_script.pl

hyphaltip avatar Aug 22 '21 22:08 hyphaltip