【发布时间】:2015-08-14 19:16:10
【问题描述】:
Perl 版本 = v5.12.4
LWP::UserAgent->版本 = 6.03
#....
# Setup HTTP request
my $req = HTTP::Request->new();
$req->method($cmd);
$req->uri($uri);
$req->header('content-type' => 'application/json');
$req->header('Accept' => 'application/json');
# Setup the call
my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0,
SSL_version => 'tlsv12' });
$ua->timeout(60);
# Do the call
my $resp = $ua->request($req);
# ....
http 代码始终为500,我收到错误消息 -
“无法连接到 10.0.0.1:443”。
我尝试了各种 SSL_versions 字符串 tlsv12、tslv1.2、TSLv1、TLSv12、TLS 等都无济于事。我知道服务器需要 TLS 1.2。通过 curl 进行的相同 HTTP 调用工作正常。
附加调试输出..
Perl -MIO::Socket::SSL=debug4 powervc_cli.pl -O
DEBUG: .../IO/Socket/SSL.pm:193: set domain to 2
DEBUG: .../IO/Socket/SSL.pm:1545: new ctx 140528264056208
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=60
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 -> 0
DEBUG: .../IO/Socket/SSL.pm:440: connection failed - connect returned 0
DEBUG: .../IO/Socket/SSL.pm:1276: SSL connect attempt failed because of handshake problemserror:00000000:lib(0):func(0):reason(0)
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 140528264056208 open=140528264056208
DEBUG: .../IO/Socket/SSL.pm:1590: OK free ctx 140528264056208
请帮忙! -埃迪
【问题讨论】:
-
500 是服务器端代码。您查看网络服务器的错误日志中的内容了吗?
-
@MarcB:LWP 会自行生成这样的 500 个错误代码,以将错误打包到有效的 HTTP 响应中。
-
hum.... LWP 消息通常更长。
-
请添加您从 LWP 获得的完整回复。还尝试使用
perl -MIO::Socket::SSL=debug4 program.pl运行您的代码,并将生成的调试输出添加到您的问题中。 -
$resp->content 说 LWP::Protocol::https::Socket: SSL 连接尝试失败,因为握手问题error:00000000:lib(0):func(0):reason(0)在 /System/Library/Perl/Extras/5.12/LWP/Protocol/http.pm 第 51 行。