Versione SSL non valida specificata nella riga /usr/share/perl5/IO/Socket/SSL.pm 332


9

Da quando ho aggiornato il mio PC da (k) Ubuntu 12.04 a 12.10 ricevo questo messaggio di errore quando provo a inviare un'e-mail usando sendemail.

L'installazione di una versione precedente di IO :: Socket :: SSL non è un'opzione. Ho l'impressione che tutto funzioni come dovrebbe e il messaggio è solo un avvertimento.

Come posso eliminare questo messaggio?


SSL.pm

Penso che quanto segue abbia a che fare con il problema (/usr/share/perl5/IO/Socket/SSL.pm).

34  use constant DEFAULT_VERSION     => 'SSLv23:!SSLv2';

...

251         my %default_args = (
252                 Proto => 'tcp',
253                 SSL_server => $is_server,
254                 SSL_use_cert => $is_server,
255                 SSL_check_crl => 0,
256                 SSL_version     => DEFAULT_VERSION,
257                 SSL_verify_mode => SSL_VERIFY_NONE,
258                 SSL_verify_callback => undef,
259                 SSL_verifycn_scheme => undef,  # don't verify cn
260                 SSL_verifycn_name => undef,    # use from PeerAddr/PeerHost
261                 SSL_npn_protocols => undef,    # meaning depends whether on server or client side
262                 SSL_honor_cipher_order => 0,   # client order gets preference
263         );

...

332         ${*$self}{'_SSL_ctx'} = IO::Socket::SSL::SSL_Context->new($arg_hash) || return;

invia una email

E alla fine di sendemail penso che sia qui nel codice:

1903     ## Start TLS if possible
1904     if ($conf{'tls_server'} == 1 and $conf{'tls_client'} == 1 and $opt{'tls'} =~ /^(yes|auto)$/) {
1905         printmsg("DEBUG => Starting TLS", 2);
1906         if (SMTPchat('STARTTLS')) { quit($conf{'error'}, 1); }
1907         if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {
1908             quit("ERROR => TLS setup failed: " . IO::Socket::SSL::errstr(), 1);
1909         }
1910         printmsg("DEBUG => TLS: Using cipher: ". $SERVER->get_cipher(), 3);
1911         printmsg("DEBUG => TLS session initialized :)", 1);
1912 
1913         ## Restart our SMTP session
1914         if (SMTPchat('EHLO ' . $opt{'fqdn'})) { quit($conf{'error'}, 1); }
1915     }
1916     elsif ($opt{'tls'} eq 'yes' and $conf{'tls_server'} == 0) {
1917         quit("ERROR => TLS not possible! Remote SMTP server, $conf{'server'},  does not support it.", 1);
1918     }

1
Risolto il problema modificando "SSLv3 TLSv1" nella riga di posta elettronica 1907 in "SSLv3", ma la modifica dei file installati da un pacchetto è errata .
jippie,

Nella nuova versione di Debian sto ancora riscontrando questo problema, ma ora non riesco a trovare quella linea ..... Nessuna delle altre soluzioni funziona se non ignorando tls. = (
Luciano Andress Martini il

Risposte:



4

In realtà, basta prendere il valore predefinito (rimuovere il secondo parametro). Vedi https://metacpan.org/pod/IO::Socket::SSL (cerca SSL_version). L'impostazione predefinita è SSLv23:! SSLv3:! SSLv2.

Ho modificato la riga 1906 in v1.56 per leggere

#        if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {
    if (! IO::Socket::SSL->start_SSL($SERVER)) {

(solo commentando la riga originale)


3

La soluzione più semplice è:

Sostituire:

m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i

Con:

m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i

Il mio problema è che questa correzione rompe Net :: Twitter
Dave Jacoby,

1
1690 line /usr/share/perl5/IO/Socket/SSL.pm in Ubuntu 14.04
Rahul Patil

Poiché alcune persone considerano ancora la soluzione alternativa in questa risposta come la correzione e si lamentano del bug in IO :: Socket :: SSL: il problema non è in IO :: Socket :: SSL ma è un bug in sendEmail, che non è mantenuto poiché 2009 . In dettaglio: la sintassi per SSL_version è errata e non era nemmeno valida al momento della scrittura del codice, solo IO :: Socket :: SSL non si è lamentato. La correzione è solo per rimuovere l'impostazione di SSL_version da sendemail. Vedi anche rt.cpan.org/Public/Bug/Display.html?id=77401 .
Steffen Ullrich,


2

Se si verifica ancora un errore del certificato dopo aver corretto SSLversion come mostrato sopra, è necessario disabilitare il controllo del certificato:

if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv23:!SSLv2', SSL_verify_mode => 0)) {

Non vedo il problema da anni e il pacchetto Ubuntu è stato risolto nel frattempo. Il primo tentativo di risolvere questo problema dovrebbe essere quello di correggere il sistema / utilizzare la maggior parte delle versioni correnti del software. La soluzione alternativa è interessante da un altro punto di vista, grazie.
jippie,

0
if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3')) {<br>

funziona su debian wheezy con sendEmail 1.56-2 e libio-socket-ssl-perl 1.76-2 e

if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv23:!SSLv2')) {<br>

funziona con ... / IO / Socket / SSL.pm: 1.74 sendEmail: 1.56 in Ubuntu.

Questo è stato un problema nei repository Ubuntu e Debian per oltre un anno.


0

Per risolvere questo problema, ho modificato sendEmail-v1.55 alla riga 1884 per modificare "SSLv3 TLSv1" in "SSLv3".

OSX 10.10.1


-1

ha funzionato per me

if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv23:!SSLv2')) {
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.