【发布时间】:2016-03-14 14:03:36
【问题描述】:
我发现许多问题与我的问题非常相似,但他们没有解决,所以我在这里寻求您的帮助。
我正在尝试使用 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";
response->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)连接到同一个站点,它就可以正常工作。
这是一些基于证书的错误还是这里出了什么问题?
【问题讨论】:
-
这是一个握手错误,不能通过禁用证书验证来修复。如果您提供真实的目标主机名以及 IO::Socket::SSL 的版本以及您正在使用的底层 openssl,我会很有帮助。
-
实际站点为 www.firstcard.fi 并封装 IO::Socket::SSL; - 我们的 $VERSION = '1.962';稍后我将不得不检查 openssl -version