首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Perl LWP::UserAgent在特定服务器上的SSL失败

Perl LWP::UserAgent在特定服务器上的SSL失败
EN

Stack Overflow用户
提问于 2013-11-01 23:05:28
回答 2查看 2.4K关注 0票数 0
代码语言:javascript
运行
复制
my $ua = LWP::UserAgent->new();
my $res = $ua->get("https://url");
print $res->content;

导致响应证书无效(如果我禁用了主机名验证,服务器会说我需要加密),直到我开始使用Net::SSL

代码语言:javascript
运行
复制
$ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = 'Net::SSL';

在执行我的请求之前,ofc。

目前的模块版本:

代码语言:javascript
运行
复制
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请求而没有这个问题,但这一台服务器只会响应一条消息,告诉我需要加密我的请求。

LWPNet:SSL是否更受支持?

您将如何尝试追查问题的根源?

编辑:有趣的是,这在旧版本的模块中没有发生(它最近起作用了)。我强烈怀疑是LWP或其他什么东西更新了。奇怪的是,在一次更新中,行为会发生这样的变化。

EN

回答 2

Stack Overflow用户

发布于 2013-12-09 07:02:28

如果它说证书无效,它可能无法验证它,因为它是自签名的,CA不知道或类似的问题。如果我理解正确的话,它只在这个特定的服务器上失败,所以它的证书可能有问题。如果你在浏览器上也收到错误信息,请检查一下。如果我知道确切的url并访问它,可能会提供更多的帮助。

至于Net::SSL与IO::Socket::SSL:最近的LWP版本默认使用IO::Socket::SSL (基于Net::SSLeay),而不是旧版本的Net::SSL/Crypt::SSLeay,因为IO::Socket::SSL有更多的功能,更正确的证书验证,并且正在积极开发中。

Steffen (IO::Socket::SSL的当前维护者/开发者)

票数 1
EN

Stack Overflow用户

发布于 2013-12-01 05:10:36

部分服务器不支持TLSv1.2。默认情况下,LWP会连接到一些服务器,但不会连接到那些需要较低TLS版本的服务器。我在https和LWP6.0x上有一个非常普通的500错误,并且将LWP::UserAgent设置为SSL_version => 'TLSv1‘对我不起作用。尝试强制LWP仅使用IO::Socket::SSL并强制TLS版本进行额外测试。

LWP::UserAgent Can't Post with TLS1.1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19729459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档