LWP :: UserAgent和500 SSL协商失败

Zip*_*970 5 perl ssl openssl

我正在运行一个旧的Debian服务器,每天一次通过Perl脚本获取网页.从昨天开始,脚本因"500 SSL协商失败"错误而失败.

use strict;
use LWP::UserAgent;

my $browserObj = LWP::UserAgent->new();

$response = $browserObj->get( "https://www.domain.tld" );
print $response->status_line . "\n" if( ! $response->is_success );
Run Code Online (Sandbox Code Playgroud)

就像我说的,它是一个运行旧版本的旧服务器:

  • Perl:5.8.8
  • OpenSSL:0.9.8c
  • LWP:5.805
  • 地穴:: SSLeay:0.57

我制作了服务器的快照,以便我可以尝试各种解决方案,如果失败则返回快照.这正是我在每次测试后所做的,返回到原始服务器状态.

测试1: 我尝试的第一件事是将OpenSSL更新为1.0.2d.这没有帮助,我仍然得到"SSL协商失败"错误.然后我更新了Crypt:SSLeay.这完全打破了SSL(导致服务器无法连接到任何安全服务器).

测试2:在 不更新OpenSSL的情况下更新了Crypt :: SSLeay.导致服务器无法再次连接到安全服务器.

测试3:将 OpenSSL更新为1.0.2d.更新了LWP.没有区别.仍有"500 SSL协商失败"

还有什么我可以尝试的吗?

PS:由于几个原因,我无法更新Debian本身.

Zip*_*970 1

我让它为 Perl 工作。正如我所怀疑的,服务器上使用 SSL 的每个程序都需要单独修补。但这是 Perl 的解决方案:

1)更新OpenSSL(至版本1.0.2d)

这是每个使用 SSL 的程序必需的步骤!在我的 Debian 系统上,我使用了此处的说明。

2) 更新网络::SSLeay

这是必要的,否则步骤 4) 将失败。

$ cpan Net::SSLeay
Run Code Online (Sandbox Code Playgroud)

3)更新Getopt::Long

同样,此步骤是必要的,否则步骤 4) 将失败。

$ cpan Getopt::Long
Run Code Online (Sandbox Code Playgroud)

4) 更新 Crypt::SSLeay

请注意,这也会更新 LWP。

$ cpan Crypt::SSLeay
Run Code Online (Sandbox Code Playgroud)