肥皂Perl和SSL证书已更改

时间:2019-01-29 13:16:24

标签: perl ssl soap soaplite

我有一个perl代码,可以通过 SOAP :: Lite 这样发送SOAP请求:

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:

perl -MIO :: Socket :: SSL = debug4 yourscript.pl p5-ssl-tools中的均显示错误消息1416F086提示SSL证书具有“链问题”,必须在证书安装中修复该问题。

修改2:

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

1 个答案:

答案 0 :(得分:0)

以下是 Corion Steffen 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:证书验证失败。这指向我:telegram bot SSL error: SSL error {error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed},在这里我也发现“链问题不完整”。

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