2015-09-15 21 views
5

Sto eseguendo un vecchio server Debian che una volta al giorno recupera una pagina Web tramite uno script Perl. Da ieri, lo script ha esito negativo con un errore "Negoziazione SSL 500 non riuscita".LWP :: UserAgent e 500 negoziazione SSL non riuscita

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

Come ho detto, si tratta di un vecchio server che esegue le vecchie versioni di ogni cosa:

  • Perl: 5.8.8
  • OpenSSL: 0.9.8c
  • LWP: 5.805
  • Cripta :: SSLeay: 0.57

Ho creato un'istantanea del server in modo da poter provare tutti i tipi di soluzioni e ritorna all'istantanea se fallisce. Quale è esattamente ciò che ho fatto dopo ogni test, tornare allo stato originale del server.

Test 1: Per prima cosa ho provato ad aggiornare OpenSSL a 1.0.2d. Questo non ha aiutato, ho ancora ottenuto l'errore "Negoziazione SSL fallita". Ho quindi aggiornato Crypt: SSLeay. Questo ha rotto completamente SSL (ha impedito al server di connettersi a qualsiasi server sicuro).

Test 2: Crittata: SSLeay aggiornata senza aggiornamento di OpenSSL. Ha impedito al server di connettersi nuovamente ai server protetti.

Test 3: Aggiornamento da OpenSSL a 1.0.2d. LWP aggiornato. Non ha fatto differenza Ancora ottenuto "Negoziazione SSL 500 fallita"

C'è qualcos'altro che potrei provare?

PS: per diversi motivi non riesco ad aggiornare Debian stesso.

+0

I would _guess_ il server remoto non supporta più le versioni precedenti di SSL. Ci sono un sacco di vecchie versioni SSL che sono pericolosamente insicuri, quindi i siti stanno iniziando a deprecarle. Per esempio. qualcosa del genere: http://security.stackexchange.com/questions/71457/how-can-i-verify-that-sslv3-protocol-is-disabled – Sobrique

+0

Sì, quella era la mia ipotesi anche. – Zippy1970

+0

In tal caso, non sono sicuro di come testarlo, verificare con wget forse? – Sobrique

risposta

1

Ho capito che funziona per Perl. Come sospettavo, ogni programma sul server che utilizza SSL deve essere riparato separatamente. Ma questa era la soluzione per Perl:

1) Aggiornare OpenSSL (alla versione 1.0.2d)

questo è un passo necessario per ogni programma che utilizza il protocollo SSL! Sul mio sistema Debian, ho usato le istruzioni trovate here.

2) Aggiornamento Net :: SSLeay

questo era necessario altro punto 4) fallirebbe.

$ cpan Net::SSLeay 

3) Aggiornamento Getopt :: Long

Ancora una volta, questo passaggio è stato necessario altro punto 4) fallirebbe.

$ cpan Getopt::Long 

4) Aggiornamento Crypt :: SSLeay

Si noti che questo sarà anche aggiornare LWP.

$ cpan Crypt::SSLeay 
+0

Infatti, l'aggiornamento di 'Crypt :: SSLeay' installerà' LWP :: Protocol :: https' che inserirà 'IO :: Socket :: SSL' e' Net :: SSLeay'. A meno che non vengano prese misure manuali specifiche per ignorare questo, allora non si utilizzerà affatto "Crypt :: SSLeay", ma sarà servito allo scopo di passare l'utente a "Net :: SSLeay". –