2015-09-15 22 views
5

Ich habe einen alten Debian-Server, der einmal täglich eine Webseite durch ein Perl-Skript holt. Seit gestern schlägt das Skript mit dem Fehler "500 SSL negotiation failed" fehl.LWP :: UserAgent und 500 SSL-Verhandlung fehlgeschlagen

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); 

Wie ich schon sagte, ist es ein alter Server alte Versionen von alles läuft:

  • Perl: 5.8.8
  • OpenSSL: 0.9.8c
  • LWP: 5,805
  • Crypt :: SSLeay: 0.57

Ich machte einen Schnappschuss des Servers, also konnte ich versuchen alle Arten von Lösungen und Rückkehr zum Snapshot, wenn es fehlschlägt. Was genau ich nach jedem Test gemacht habe, gehe zurück zum ursprünglichen Serverzustand.

Test 1: Das erste, was ich versuchte, war OpenSSL auf 1.0.2d zu aktualisieren. Das hat nicht geholfen, ich bekam immer noch den Fehler "SSL negotiation failed". Ich habe dann Crypt: SSLeay aktualisiert. Dadurch wurde SSL vollständig zerstört (der Server konnte keine Verbindung zu einem sicheren Server herstellen).

Test 2: Aktualisiert Crypt :: SSLeay ohne Aktualisierung von OpenSSL. Hat den Server dazu veranlasst, sich nicht mehr mit sicheren Servern zu verbinden.

Test 3: Aktualisierte OpenSSL zu 1.0.2d. Aktualisiert LWP. Machte keinen Unterschied. Immer noch "500 SSL-Verhandlung fehlgeschlagen"

Gibt es noch etwas, das ich versuchen könnte?

PS: Aus verschiedenen Gründen kann ich Debian nicht selbst aktualisieren.

+0

Ich würde _guess_ Ihr Remote-Server nicht mehr unterstützt ältere Versionen von SSL. Es gibt eine Reihe älterer SSL-Versionen, die gefährlich unsicher sind. Daher beginnen Websites, sie abzulehnen. Z.B. etwas wie das: http://security.stackexchange.com/questions/71457/how-can-i-verify-that-sslv3-protocol-is-disabled – Sobrique

+0

Ja, das war meine Vermutung auch. – Zippy1970

+0

In diesem Fall bin ich nicht wirklich sicher, wie Sie es testen würden - verifizieren Sie mit wget vielleicht? – Sobrique

Antwort

1

Ich habe es für Perl arbeiten. Wie ich vermutete, muss jedes Programm auf dem Server, der SSL verwendet, separat gepatcht werden. Aber das war die Lösung für Perl:

1) Aktualisieren OpenSSL (auf Version 1.0.2d)

Dies ist ein notwendiger Schritt für jedes Programm, das SSL verwendet! Auf meinem Debian-System habe ich die Anweisungen here verwendet.

2) Update-Net :: SSLeay

Dies war notwendig, sonst Schritt 4) fehlschlagen würde.

$ cpan Net::SSLeay 

3) Update-Getopt :: Long

Wieder war dieser Schritt notwendig, ansonsten Schritt 4) fehlschlagen würde.

$ cpan Getopt::Long 

4) Update-Crypt :: SSLeay

Beachten Sie, dass dies auch LWP aktualisieren.

$ cpan Crypt::SSLeay 
+0

In der Tat wird die Aktualisierung von 'Crypt :: SSLeay'' LWP :: Protocol :: https' installieren, die 'IO :: Socket :: SSL' und' Net :: SSLeay' einbezieht. Sofern nicht bestimmte manuelle Schritte unternommen werden, um dies zu überschreiben, wird dann bewirkt, dass "Crypt :: SSLeay" überhaupt nicht verwendet wird, aber es wird dem Zweck dienen, den Benutzer zu "Net :: SSLeay" zu überführen. –

Verwandte Themen