Perl用户代理赢得';t连接到TLS1.2服务器

Perl用户代理赢得';t连接到TLS1.2服务器,perl,ssl,lwp,Perl,Ssl,Lwp,Perl版本=v5.12.4 LWP::UserAgent->VERSION=6.03 http代码总是500,我收到错误消息- “无法连接到10.0.0.1:443” 我尝试过各种SSL_版本,如tlsv12、tslv1.2、tslv1、tlsv12、TLS等,但都没有成功。我知道服务器需要TLS1.2。通过curl进行相同的HTTP调用可以正常工作 其他调试输出 Perl -MIO::Socket::SSL=debug4 powervc_cli.pl -O DEBUG: .../IO/So

Perl版本=v5.12.4

LWP::UserAgent->VERSION=6.03

http代码总是
500
,我收到错误消息-

“无法连接到10.0.0.1:443”

我尝试过各种SSL_版本,如tlsv12、tslv1.2、tslv1、tlsv12、TLS等,但都没有成功。我知道服务器需要TLS1.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
请帮忙-埃迪

这看起来服务器不喜欢客户端发送的SSL握手,因此服务器关闭了连接。服务器执行此操作的原因尚不清楚,但您可能会在服务器端发现错误消息

通过curl进行相同的HTTP调用可以正常工作

如果这确实是一个HTTP调用(即没有HTTPS),那么使用curl时,您的问题是服务器需要HTTP w/o SSL,而使用LWP的代码使用HTTP with SSL(HTTPS)。但是,如果使用curl的HTTPS调用成功,那么您可以通过使用curl捕获成功调用的数据包和使用LWP捕获不成功调用的数据包并比较握手来调试问题

我尝试过各种SSL_版本,如tlsv12、tslv1.2、tslv1、tlsv12、TLS等,但都没有成功


对于当前版本的IO::Socket::SSL,它将接受TLS 1.2的TLSv12和TLSv1_2,以及TLS 1的TLSv1。*,情况无关紧要。仅指定“TLS”将导致IO::Socket::SSL发出嘎嘎声。较旧版本的IO::Socket::SSL(2012年1.70版之前)只是忽略了无效设置。另请参阅说明设置的文档。

500是服务器端代码。你看了Web服务器的错误日志了吗?@MarcB:LWP会自动生成500个错误代码,将错误打包成有效的HTTP响应。哼。。。。LWP消息通常较长。请添加从LWP获得的完整响应。另外,请尝试使用
perl-MIO::Socket::SSL=debug4 program.pl
运行您的代码,并将生成的调试输出添加到您的问题中。$resp->content说LWP::Protocol::https::Socket:SSL连接尝试因握手问题而失败错误:00000000:lib(0):func(0):reason(0)at/System/Library/perl/Extras/5.12/LWP/Protocol/http.pm第51行。
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
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)