perl - 如何让 Frontier::Client/LWP 停止验证 CGI::Application Web 应用程序中的 SSL 证书?

标签 perl ssl https lwp

在开发和测试环境中,我们为 XMLRPC 网络服务使用自签名 SSL 证书。生产使用了一个很好的第 3 方证书,并且证书验证工作得很好,没有问题。

在调用应用程序的代码中,这是一个 CGI::Application web 应用程序,我们只在开发和测试环境中跳过 SSL 证书的验证,知道它会并且应该失败......或者尝试跳过它。尽管将 $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} 设置为 0,调用仍然失败:

Error executing run mode 'myRunMode': 500 Can't connect to mydomain.com:443 (certificate verify failed)

已经尝试了一堆其他(现在可能已弃用?)env 变量,但我们似乎无法在网络应用程序中解决此错误。在命令行中,我们可以使用所有相同的代码进行一次忽略证书验证的成功调用,并且我们比较了所有正在运行的 Perl 模块的版本(两种情况下的 LWP 均为 6.15实例)。

根据使用的 SSL 后端,在线讨论指向不同的场景,因此我们尝试安装 LWP::Protocol::https,至少得到了不同的行为。我们在模块安装后就开始失败:

Error executing run mode 'myRunMode': 404 Not Found

404 似乎是一个转移注意力的问题,但遗憾的是,删除 LWP::Protocal::https 让我们回到“证书验证失败”错误,所以看起来我们可能正在做某事。

有没有人知道如何在此 CGI::Application 环境中跳过证书验证?

最佳答案

这是一个旧线程,但我仍然想分享我的解决方案。 只需在进行前沿调用之前添加以下内容:

$ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'} = 0;

无需更改任何边界代码或其他内容......

关于perl - 如何让 Frontier::Client/LWP 停止验证 CGI::Application Web 应用程序中的 SSL 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37264884/

相关文章:

python - 是否有与 Perl 的 XML::Simple 等效的 Python?

c++ - OpenSSL 将消息拆分为两条记录

security - 在防火墙中只允许 IPv4 和 HTTPS

ssl - 在 Openssl 命令中加密密码

cookies - 是否可以将 cookie ASP.NET_sessionID 标记为安全

security - HTTPS 响应正文 - 安全吗?

Perl 的反引号/系统给出 "tcsetattr: Input/output error"

perl - Perl 的污点模式有用吗?

perl - ImageMagick命令行选项顺序(以及命令行参数的类别)

.htaccess - 仅使用 .htaccess 在某些页面上将 http 重写为 https