LWP :: UserAgent和500 SSL协商失败

时间:2015-09-15 08:33:22

标签: 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 );

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

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

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

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

测试2: 更新了Crypt :: SSLeay而不更新OpenSSL。导致服务器无法再次连接到安全服务器。

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

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

PS:由于多种原因,我无法更新Debian本身。

1 个答案:

答案 0 :(得分:1)

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

1)更新OpenSSL(版本1.0.2d)

这是每个使用SSL的程序的必要步骤!在我的Debian系统上,我使用了here找到的说明。

2)更新Net :: SSLeay

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

$ cpan Net::SSLeay

3)更新Getopt :: Long

同样,这一步是必要的,否则步骤4)会失败。

$ cpan Getopt::Long

4)更新Crypt :: SSLeay

请注意,这也将更新LWP。

$ cpan Crypt::SSLeay