my $ua = LWP::UserAgent->new();
my $res = $ua->get("https://url");
print $res->content;
导致证书无效的响应(如果我禁用主机名验证,服务器会说我需要加密),直到我开始使用Net::SSL
:
$ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = 'Net::SSL';
在做我的请求之前,ofc。
目前的模块版本:
Crypt::SSLeay 0.58
IO::Socket::SSL 1.955
Net::SSLeay 1.55
LWP 6.05
LWP::Protocol::https 6.04
还尝试了最新的Crypt::SSLeay
但仍然失败(在测试环境中尝试过)。
这只是Crypt::SSLeay
库中的限制,在客户端和服务器之间 - 他们可能无法就加密方法达成一致?
我也曾经OpenSSL
手动连接到有问题的服务器,它没有问题,没有证书失败等等。
我的问题已经解决了,但不是以一种非常优雅的方式,但我很好奇错误在哪里,因为我花了很长时间试图找到解决方案,以及问题的根源。我将 SSL 请求发送到数百个其他服务器而没有这个问题,但是这台服务器只会回复一条消息,说我需要加密我的请求。
是LWP
一起Net:SSL
支持更多吗?
您将如何尝试追查问题的根源?
编辑:有趣的是这在旧版本的模块中没有发生(它最近工作)。我强烈怀疑它是 LWP 或更新的东西。奇怪的是行为如何在更新中发生这样的变化。