2015-12-09 37 views
0

我發現很多問題與我的問題非常相似,但它們沒有解決問題,所以在這裏我要求您的幫助。LWP/IO :: Socket :: SSL失敗,SSL3_GET_SERVER_HELLO:返回錯誤的密碼

我想從使用https的Perl LWP的網頁獲取數據。 我幾乎可以從我嘗試過的每個站點獲取數據,除了我真正需要使用的站點之外。 我在Windows x64下使用Perl版本v5.18.2。 這是我的基本假例如:

use strict; 
use LWP::UserAgent; 
use HTTP::Request; 
use IO::Socket::SSL qw(debug3); 
my $ua = LWP::UserAgent->new; 
my $url = 'https://www.domainx.com:443'; 
my $req = HTTP::Request->new(GET => $url); 
my $response = $ua->request($req); 
print $response->status_line . "\n"; 

而導致的響應 - > status_line: 500 Can't connect to www.domainx.com:443

調試用於SSL:

DEBUG: .../IO/Socket/SSL.pm:1890: new ctx 48125200 
DEBUG: .../IO/Socket/SSL.pm:393: socket not yet connected 
DEBUG: .../IO/Socket/SSL.pm:395: socket connected 
DEBUG: .../IO/Socket/SSL.pm:413: ssl handshake not started 
DEBUG: .../IO/Socket/SSL.pm:443: using SNI with hostname www.domainx.com 
DEBUG: .../IO/Socket/SSL.pm:466: set socket to non-blocking to enforce  timeout=180 
DEBUG: .../IO/Socket/SSL.pm:479: Net::SSLeay::connect -> -1 
DEBUG: .../IO/Socket/SSL.pm:489: ssl handshake in progress 
DEBUG: .../IO/Socket/SSL.pm:499: waiting for fd to become ready: SSL wants a read first 
DEBUG: .../IO/Socket/SSL.pm:519: socket ready, retrying connect 
DEBUG: .../IO/Socket/SSL.pm:479: Net::SSLeay::connect -> -1 
DEBUG: .../IO/Socket/SSL.pm:1359: SSL connect attempt failed with unknown error 
DEBUG: .../IO/Socket/SSL.pm:485: fatal SSL error: SSL connect attempt failed with unknown error error:14092105:SSL routines:SSL3_GET_SERVER_HELLO:wrong cipher returned 
DEBUG: .../IO/Socket/SSL.pm:1924: free ctx 48125200 open=48125200 
DEBUG: .../IO/Socket/SSL.pm:1932: OK free ctx 48125200 

從檢查以前的職位,我想申請:ssl_opts => {verify_hostname => 0},但這沒有幫助。 如果我嘗試使用瀏覽器(IE或Chrome)連接到相同的網站,它工作得很好。

這是一些基於證書的錯誤還是這裏出了什麼問題?

+0

這是一個握手錯誤,無法通過禁用證書驗證來修復。如果你提供了真正的目標主機名以及IO :: Socket :: SSL的版本和你正在使用的底層openssl,我會很有幫助。 –

+0

實際網站是www.firstcard.fi 和包IO :: Socket :: SSL; - 我們的$ VERSION ='1.962'; 我將不得不檢查openssl -version以後 – tommi

回答

1

實際的網站是www.firstcard.fi

服務器超負荷斷爲也可以從report by SSLLabs看到。要獲得與服務器的連接必須通過只使用單一密碼良好的服務器提供瞭解決這些問題:

my $ua = LWP::UserAgent->new; 
$ua->ssl_opts(SSL_cipher_list => 'DES-CBC3-SHA'); 

有趣的是,這個密碼被包含在IO ::插座使用的缺省密碼列表: :SSL,但服務器太破碎,無法正確處理正確的ClientHello。

+0

嗨。這似乎工作。非常感謝你 !! 你是如何找出正確的密碼的? – tommi

+0

這可以從我已鏈接到的SSLLabs報告中看到。但最後我有各種工具來測試網站(openssl s_client,https://github.com/noxxi/p5-ssl-tools/blob/master/analyze-ssl.pl),並且我有其他破損網站的經驗。 –

+0

再次感謝您。 – tommi

相關問題