Perl LWP GET或POST到SNI SSL URL

Ben*_*ess 3 perl ssl lwp

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

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

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

有没有办法判断这个问题是因为他们的SNI SSL,还是其他不同的东西?我想我可以通过关闭verify_hostname解决问题,但这是最后的手段,我宁愿让它正常工作.

我应该采取什么其他措施?

Ste*_*ich 8

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

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

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