/usr/share/perl5/IO/Socket/SSL.pm 라인 332에 잘못된 SSL_version이 지정되었습니다.


9

PC를 (k) ubuntu 12.04에서 12.10으로 업그레이드 한 후을 사용하여 이메일을 보내려고하면이 오류 메시지가 나타납니다 sendemail.

IO :: Socket :: SSL의 이전 버전을 설치하는 것은 옵션이 아닙니다. 나는 모든 것이 정상적으로 작동한다는 메시지를 받았으며 메시지는 단지 경고 일뿐입니다.

이 메시지를 어떻게 제거 할 수 있습니까?


SSL.pm

아래는 문제 (/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;

이메일을 보내

그리고 sendemail 끝에 나는 그것이 코드에서 여기에 있다고 생각합니다.

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
sendemail 라인 1907의 'SSLv3 TLSv1'을 'SSLv3'으로 변경하여 당분간 해결했지만 패키지에서 설치된 파일을 편집하는 것은 좋지 않습니다 .
jippie

새로운 데비안 버전에서 나는 여전히이 문제를 겪고 있지만 지금은 그 줄을 찾을 수 없습니다 ..... tls를 무시하고 다른 솔루션은 작동하지 않습니다. = (
Luciano Andress Martini

답변:


8

데비안의 버그 트래커 웹 사이트에 버그 리포트가 있습니다 : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=679911

또한 해결 방법이 있습니다.

-o tls=no명령 행에서 옵션으로 지정 하십시오.

debian.org의 @Manolo Díaz에게 감사합니다.


해결 방법으로 문제는 없지만 수정이 필요합니다.
Znik

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 :: Socket :: SSL의 버그에 대해 불평하기 때문에 : 문제는 IO :: Socket :: SSL에는 없지만 sendEmail의 버그입니다. 2009 년 . 상세하게 : SSL_version의 구문이 잘못되어 코드 작성 시점에 유효하지 않았으므로 IO :: Socket :: SSL 만 불평하지 않았습니다. 수정은 sendemail에서 SSL_version 설정을 제거하는 것입니다. rt.cpan.org/Public/Bug/Display.html?id=77401 도 참조하십시오 .
Steffen Ullrich


2

위와 같이 SSLversion을 수정 한 후에도 여전히 인증서 오류가 발생하면 인증서 검사를 비활성화해야합니다.

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

오랜 세월 동안 문제를 직접 보지 못했고 우분투 패키지는 그 동안 수정되었습니다. 이 문제를 해결하기위한 첫 번째 시도는 시스템을 패치하고 최신 버전의 소프트웨어를 사용하는 것입니다. 대체 솔루션은 thnx의 다른 관점에서 흥미 롭습니다.
jippie

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

sendEmail 1.56-2 및 libio-socket-ssl-perl 1.76-2로 데비안 wheezy에서 작동합니다.

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

우분투에서… / IO / Socket / SSL.pm : 1.74 sendEmail : 1.56과 호환됩니다.

이것은 1 년 이상 우분투 및 데비안 저장소에서 문제가되었습니다.


0

이 문제를 해결하기 위해 1884 행에서 sendEmail-v1.55를 편집하여 'SSLv3 TLSv1'을 'SSLv3'으로 변경했습니다.

OSX 10.10.1


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.