2015-05-26 2 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

Укажите, пожалуйста, URL и версию зависимых модулей (возможно, IO :: Socket :: SSL), которые вы используете и предпочитаете версию 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». Мне это не очень нравится, хотя после следующего обновления протокола потребуется исправление снова. Я бы предпочел позволить библиотекам вести переговоры самостоятельно.

Смежные вопросы