Perl LWP GET 或 POST 到 SNI SSL URL

2024-05-19

我有一个使用 perl LWP 向客户发送数据的系统。他们可以选择 URL 以及是 POST 还是 GET。

一位新客户最近抱怨该服务不起作用,他们怀疑这是因为他们的端点使用了 SNI SSL。

查看日志,我看到的只是错误消息“(证书验证失败)(500 读取超时)”。

有什么方法可以判断这个问题是由于他们的 SNI SSL 还是其他原因造成的?我认为我可以通过关闭 verify_hostname 来解决问题,但这是最后的手段,我宁愿让它正常工作。

我还应该采取哪些其他步骤?


SNI 是否可能出现问题取决于您使用的模块及其版本:

  • LWP 从 6.0 版本开始使用 IO::Socket::SSL 作为后端 SSL 库。在此之前,它使用不支持 SNI 的 Crypt::SSLeay,您仍然可以强制使用 Crypt::SSLeay。但是,虽然这可能会导致服务器返回错误的数据,但在大多数情况下不会导致验证问题,因为 Crypt::SSLeay 不会验证证书中的名称是否与请求的主机名匹配(因此不会检测到 man-中间攻击)。
  • IO::Socket::SSL 自版本 1.56 (02/2012) 起在客户端执行 SNI,但您至少需要 OpenSSL 1.0 版本。由于 OpenSSL 在与某些服务器交互时存在错误,因此禁用了对旧版本的支持。

您可以尝试通过设置来调试问题$IO::Socket::SSL::DEBUG=4运行代码时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Perl LWP GET 或 POST 到 SNI SSL URL 的相关文章

随机推荐