我正在尝试使用ssl调用一个web服务。它会产生以下错误:
500 SSL协商失败:
我在论坛上搜索并应用了提供的方法,但没有一种方法有效。
我所采用的2种方法如下:
1)在调用前设置环境:
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
2-)将参数ssl_opts => SSL_verify_mode => 0传递给代理:
my $soap = SOAP::Lite
-> on_action( .... )
-> uri($uri)
-> proxy($proxy, ssl_opts => [ SSL_verify_mode => 0 ])
-> ns("http://schemas.xmlsoap.org/soap/envelope/","soapenv")
-> ns("http://tempuri.org/","tem");
$soap->serializer()->encodingStyle(undef);有什么解决办法吗?
发布于 2017-02-17 13:18:27
..。点对点在/usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/Net/SSL.pm线路145处重置连接
您正在运行一个非常旧的Perl版本(从2004年开始)和一个旧版本的SSL库(即Crypt::SSLeay,而不是IO::Socket::SSL),我的猜测是,这与使用一个非常旧版本的OpenSSL库来支持TLS相结合。这种组合意味着不支持SNI,不支持TLS 1.2,也不支持ECDHE密码。许多现代服务器至少需要支持其中的一种。但是connection reset by peer也可能意味着某些防火墙阻塞连接,或者没有服务器监听您指定的端点。或者,这可能意味着服务器期望您使用客户端证书进行授权。很难说,但是通过数据包捕获连接,您可能会提供更多的信息。而且,如果URL是可公开访问的发布,它也将有助于调试问题。
https://stackoverflow.com/questions/42298218
复制相似问题