1

我有一个通过SOAP::Lite发送 SOAP 请求的 perl 代码,如下所示:

eval 
{
  $sresp = SOAP::Lite
    ->uri('http://machine/key')
    ->proxy('https://usr:pwd@website.com/addr/addr/remotescript.pl')
    ->remotescript_pl_function(@parms, $gmtime);
};
if ($@)
{
  print $@;
}

*.website.com 的现有证书被替换后,我不再得到有效的响应,我得到了

500 Can\'t connect to website.com:443 at localscript.pl line 123.

如果我启用

$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;

一切正常。但我想验证 SSL 主机名,我该怎么做,或追查问题?(我在这个代理中有点迷失)。

我有带有 libcurl 的 c++ 代码,它遵循相同的路线并且运行良好。在浏览器中输入https://website.com可以正常工作。输入http://machine(机器在本地网络上)可以工作。

编辑1:

来自 p5-ssl-tools 的 perl -MIO::Socket::SSL=debug4 yourscript.pl 和 analyze-ssl.pl 都显示错误消息1416F086,这使我了解到 SSL 证书具有必须修复的“链问题”的信息证书安装。

编辑2:

修复证书后,错误消失了!完美,解决!

4

1 回答 1

0

这是CorionSteffen Ullrich在评论中提到的解决方案:

运行:

  1. https://github.com/noxxi/p5-ssl-tools脚本analyze-ssl.pl
  2. perl -MIO::Socket::SSL=debug4 yourscript.pl

显示相同的错误:SSL 连接尝试失败错误:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败。这指出我:电报机器人 SSL 错误:SSL 错误 {error:1416F086:SSL 例程:tls_process_server_certificate:certificate verify failed}我发现我也有“链问题不完整”。

修复证书后,错误消失了。

于 2019-02-01T08:25:22.777 回答