perl - Soap perl 和 ssl 证书已更改

标签 perl ssl soap soaplite

我有一个通过 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:

perl -MIO::Socket::SSL=debug4 yourscript.planalyze-ssl.pl from p5-ssl-tools 均显示错误消息 1416F086,这导致我了解到 SSL 证书存在“链问题”,必须在证书安装中修复。

编辑 2:

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

最佳答案

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

修复证书后错误消失。

关于perl - Soap perl 和 ssl 证书已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54421962/

相关文章:

java - Tomcat-to-tomcat 连接给出 SSLHandshakeException,而 JavaApp-to-Tomcat 工作正常

c# - 如何指定用于 WebClient 类的 SSL 协议(protocol)

java - Java WebService 中的端口名和服务名未更改

java - 如何从 JAX-WS 类中提取 SOAP 头信息?

java - 无法通过 KSOAP Android 登录到 Web 服务

linux - 在脚本化 Web 应用程序中是否更喜欢 fork 进程(而不是 fork 线程)?

linux - 递归删除给定路径中所有文件和文件夹的绝对最快方法。 Linux

linux - 安装自签名证书 Linux yocto

java - Perl 与 Java 中的多线程

perl - 安装 perl 模块和复制整个文件夹有什么区别?