2015-05-26 39 views
0

我使用LWP::UserAgent version 6.03获取网站的地位。错误:500无法连接到foo.com:443(未知errorerror:140773F2:SSL例程:SSL23_GET_SERVER_HELLO:SSLv3)和

my $ua = LWP::UserAgent->new(ssl_opts => {verify_hostname => 0},); 
    $ua->cookie_jar({}); 
    $ua->agent('Mozilla/5.0'); 
    push @{$ua->requests_redirectable}, 'POST'; 
    push @{$ua->requests_redirectable}, 'GET'; 

    my $url = 'https://foo.com' 
    $page = $ua->get($url); 
    print "Error ".$page->status_line."\n"; 

当我在unix机器上运行此代码时,它给出了LWP模块的以下状态和错误消息。

#status 
    500 Can't connect to foo.com:443 

    #error 
    LWP::Protocol::https::Socket: SSL connect attempt failed with unknown 
    errorerror:140773F2:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert 
    unexpected message at /usr/local/lib/perl5/site_perl/5.8.9/LWP/Protocol/http.pm line 51. 

我试图使用回答given to similar question,但它没有解决。需要你的宝贵意见。

跑调试

DEBUG: .../IO/Socket/SSL.pm:193: set domain to 2 
DEBUG: .../IO/Socket/SSL.pm:1545: new ctx 74489552 
DEBUG: .../IO/Socket/SSL.pm:334: socket not yet connected 
DEBUG: .../IO/Socket/SSL.pm:336: socket connected 
DEBUG: .../IO/Socket/SSL.pm:349: ssl handshake not started 
DEBUG: .../IO/Socket/SSL.pm:379: set socket to non-blocking to enforce timeout=180 
DEBUG: .../IO/Socket/SSL.pm:392: Net::SSLeay::connect -> -1 
DEBUG: .../IO/Socket/SSL.pm:402: ssl handshake in progress 
DEBUG: .../IO/Socket/SSL.pm:412: waiting for fd to become ready: SSL wants a read first 
DEBUG: .../IO/Socket/SSL.pm:432: socket ready, retrying connect 
DEBUG: .../IO/Socket/SSL.pm:392: Net::SSLeay::connect -> -1 
DEBUG: .../IO/Socket/SSL.pm:1276: SSL connect attempt failed with unknown errorerror:140773F2:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert unexpected message 

DEBUG: .../IO/Socket/SSL.pm:398: fatal SSL error: SSL connect attempt failed with unknown errorerror:140773F2:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert unexpected message 
DEBUG: .../IO/Socket/SSL.pm:1276: IO::Socket::INET6 configuration failederror:00000000:lib(0):func(0):reason(0) 
DEBUG: .../IO/Socket/SSL.pm:1582: free ctx 74489552 open=74489552 

DEBUG: .../IO/Socket/SSL.pm:1590: OK free ctx 74489552` 
+2

请提供您正在使用的依赖模块(可能是IO :: Socket :: SSL)的URL和版本,并且最好使用openssl的版本。你需要一个代理吗? –

+0

IO :: Socket :: SSL-> VERSION: 'Version1.54' –

+0

请使用'perl -MIO :: Socket :: SSL = debug4 app.pl'运行你的代码来启用调试。为了更好地帮助提供OpenSSL版本('perl -MIO :: Socket :: SSL -e'printf'%x \ n“,Net :: SSLeay :: OPENSSL_VERSION_NUMBER()''。除非它失败了所有的URL如果你希望得到帮助,也可以更好地提供目标主机。现在猜测是它与SNI有关,它只能在1.56之后才可用。 –

回答

1

是啊......当一些服务占贵宾犬漏洞这样的事情发生。我没有做过研究,找到确切的原因。只是在某些情况下,客户端和服务器没有正确协商协议。我们通过将'SSL_version' => 'tlsv1'添加到“ssl_opts”来解决此问题。我不太喜欢它,但自从下一次协议升级以后,它将需要再次修复。我宁愿让图书馆自己进行谈判。

相关问题