/usr/share/perl5/IO/Socket/SSL.pm satır 332'de geçersiz SSL_version belirtildi


9

Bilgisayarımı (k) ubuntu 12.04'ten 12.10'a yükselttiğim için kullanarak bir e-posta göndermeye çalışırken bu hata iletisini alıyorum sendemail.

IO :: Socket :: SSL'nin daha eski bir sürümünü yüklemek bir seçenek değildir. Tüm olması gerektiği gibi çalışır izlenim var ve mesaj sadece bir uyarı.

Bu mesajdan nasıl kurtulabilirim?


SSL.pm

Aşağıdaki sorunla ilgili olduğunu düşünüyorum (/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;

eposta gönder

Ve sendemail sonunda kodda burada olduğunu düşünüyorum:

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
Şimdilik 'SSLv3 TLSv1'in 1907 sendemail satırını' SSLv3 'olarak değiştirerek çözdü, ancak bir paketten yüklenen dosyaları düzenlemek kötü .
jippie

Yeni debian sürümünde hala bu sorunu yaşıyorum, ama şimdi bu satırı bulamıyorum ..... Başka hiçbir çözüm tls göz ardı dışında çalışıyor. = (
Luciano Andress Martini

Yanıtlar:



4

Aslında, sadece varsayılanı alın (ikinci parametreyi kaldırın). Bkz. Https://metacpan.org/pod/IO::Socket::SSL (SSL_version için arama). Varsayılan SSLv23:! SSLv3:! SSLv2'dir.

Okumak için v1.56'daki 1906 satırını değiştirdim

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

(sadece orijinal satırı yorumlar)


3

Daha kolay geçici çözüm:

Değiştir:

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

İle:

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

Benim sorunum bu düzeltme Net :: Twitter
Dave Jacoby

1
Ubuntu'da 1690 hattı /usr/share/perl5/IO/Socket/SSL.pm 14.04
Rahul Patil

Bazı insanlar hala bu cevaptaki geçici çözümü düzeltme olarak gördüğünden ve IO :: Socket :: SSL'deki hatadan şikayet ettiğinden: Sorun IO :: Socket :: SSL'de değil, ancak sendEmail'de bir hata. 2009 . Ayrıntılı olarak: SSL_version sözdizimi yanlıştır ve kod yazılırken bile geçerli değildi, o zaman sadece IO :: Socket :: SSL şikayet etmedi. Düzeltme, yalnızca SSL_version ayarını sendemail'den kaldırmaktır. Ayrıca bkz . Rt.cpan.org/Public/Bug/Display.html?id=77401 .
Steffen Ullrich


2

Yukarıda gösterildiği gibi SSLversion'u düzelttikten sonra da bir sertifika hatası alıyorsanız, sertifika kontrolünü devre dışı bırakmanız gerekir:

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

Sorunu asırlardır kendim görmedim ve ubuntu paketi bu arada düzeltildi. Bu sorunu gidermeye yönelik ilk girişim, sistemi düzeltmek / yazılımın en güncel sürümlerini kullanmak olmalıdır. Alternatif çözüm başka bir açıdan ilginçtir, thnx.
jippie

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

sendEmail 1.56-2 ve libio-socket-ssl-perl 1.76-2 ile debian wheezy üzerinde çalışır ve

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

Ubuntu'da… / IO / Socket / SSL.pm: 1.74 sendEmail: 1.56 ile çalışır.

Bu ubuntu ve debian depolarında bir yıldan uzun bir süredir bir sorun olmuştur.


0

Bunu düzeltmek için 1884 satırındaki sendEmail-v1.55'i 'SSLv3 TLSv1' i 'SSLv3' olarak değiştirdim.

OSX 10.10.1


-1

benim için çalıştı

if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv23:!SSLv2')) {
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.