我正在运行一个旧的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 );
就像我说的那样,它是一台运行旧版本的旧服务器:
我制作了服务器的快照,因此我可以尝试各种解决方案,如果失败则返回快照。这正是我在每次测试后所做的,返回原始服务器状态。
测试1: 我尝试的第一件事是将OpenSSL更新为1.0.2d。这没有帮助,我仍然得到“SSL协商失败”错误。然后我更新了Crypt:SSLeay。这完全破坏了SSL(导致服务器无法连接到任何安全服务器)。
测试2: 更新了Crypt :: SSLeay而不更新OpenSSL。导致服务器无法再次连接到安全服务器。
测试3: 将OpenSSL更新为1.0.2d。更新了LWP。没有区别。仍然有“500 SSL协商失败”
还有什么我可以尝试的吗?
PS:由于多种原因,我无法更新Debian本身。
答案 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