अमान्य SSL_version /usr/share/perl5/IO/Socket/SSL.pm लाइन 332 पर निर्दिष्ट


9

चूँकि मैंने अपने पीसी को (k) ubuntu 12.04 से 12.10 पर अपग्रेड किया था। मुझे यह त्रुटि संदेश प्राप्त हुआ जब ईमेल का उपयोग करने का प्रयास किया गया sendemail

IO :: सॉकेट :: SSL का पुराना संस्करण इंस्टॉल करना एक विकल्प नहीं है। मुझे यह आभास है कि सभी को काम करना चाहिए और संदेश सिर्फ एक चेतावनी है।

मैं इस संदेश से कैसे छुटकारा पा सकता हूं?


SSL.pm

मुझे लगता है कि नीचे समस्या (/rr/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;

ईमेल भेजें

और मुझे लगता है कि यह कोड के बारे में यहाँ है:

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
'SSLv3 TLSv1'in sendemail लाइन 1907 को' SSLv3 'में बदलकर इसे कुछ समय के लिए हल कर दिया, लेकिन एक पैकेज से स्थापित फ़ाइलों को संपादित करना खराब है
जिप्पी

नए डेबियन संस्करण में मैं अभी भी इस मुद्दे को ले रहा हूं, लेकिन मैं अब उस लाइन को खोजने में असमर्थ हूं ..... टिल्स को नजरअंदाज करने के अलावा कोई अन्य समाधान काम नहीं कर रहा है। =
लुसियानो एंड्रेस मार्टिनी

जवाबों:


8

डेबियन की बग ट्रैकर वेबसाइट पर एक बग रिपोर्ट है: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=679911

यह एक वर्कअराउंड भी बताता है:

-o tls=noकमांड लाइन पर एक विकल्प के रूप में निर्दिष्ट करें ।

धन्यवाद @Manolo deíaz on debian.org


वर्कअराउंड के रूप में यह ठीक है, लेकिन फिक्स की आवश्यकता है।
ज़नीक

4

असल में, बस डिफ़ॉल्ट (दूसरा पैरामीटर निकालें)। देखें https://metacpan.org/pod/IO::Socket::SSL (SSL_VERSION के लिए खोज)। डिफ़ॉल्ट है SSLv23:! SSLv3:! SSLv2

मैंने v1.56 में पढ़ने के लिए लाइन 1906 को संशोधित किया

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

(मूल लाइन से टिप्पणी करते हुए)


3

आसान समाधान है:

बदलने के:

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

साथ में:

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

मेरी समस्या यह है कि यह फिक्स नेट :: ट्विटर
डेव जैकबी

1
उबंटू 14.04 में 1690 लाइन /usr/share/perl5/IO/Socket/SSL.pm
राहुल पाटिल

चूँकि कुछ लोग अभी भी इस उत्तर में समाधान पर विचार करते हैं और IO में बग के बारे में शिकायत करते हैं :: सॉकेट :: SSL: समस्या IO में नहीं है :: सॉकेट :: SSL 2009 । विस्तार से: SSL_version के लिए वाक्यविन्यास गलत है और उस समय भी मान्य नहीं था जब कोड लिखा गया था, केवल IO :: सॉकेट :: SSL ने तब शिकायत नहीं की थी। फिक्स सिर्फ SSL_version की सेटिंग को भेजने से हटाने के लिए है। Rt.cpan.org/Public/Bug/Display.html?id=77401 भी देखें ।
स्टेफेन यूरिच


2

यदि आपको अभी भी ऊपर दिखाए गए अनुसार SSLversion को ठीक करने के बाद प्रमाणपत्र त्रुटि मिलती है, तो आपको प्रमाणपत्र जाँच को अक्षम करना होगा:

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

इस मुद्दे को खुद उम्र के लिए नहीं देखा है और ubuntu पैकेज जबकि इस बीच में तय किया गया है। इस मुद्दे को ठीक करने में पहला प्रयास सिस्टम को पैच करना / सॉफ्टवेयर के अधिकांश वर्तमान संस्करणों का उपयोग करना होना चाहिए। वैकल्पिक समाधान अन्य दृष्टिकोण से दिलचस्प है, यद्यपि, thnx।
जिप्पी

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

1.5E-2 और कामेच्छा-सॉकेट-एसएसएल-पर्ल 1.76-2 और के साथ डेबियन व्हीज़ी पर काम करता है

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

साथ काम करता है ... / IO / सॉकेट / SSL.pm: 1.74 SendEmail: उबंटू में 1.56।

यह ubuntu और debian repos में एक वर्ष से अधिक के लिए एक समस्या रही है।


0

इसे ठीक करने के लिए, मैंने mail SSLv3 TLSv1 ’को। SSLv3’ में बदलने के लिए sendEmail-v1.55 को लाइन 1884 पर संपादित किया।

OSX 10.10.1


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.