Bug 1335035

Summary: [RFE]allow IO::Socket::SSL to support TLSv1.1, TLSv1.2
Product: Red Hat Enterprise Linux 7 Reporter: Petr Pisar <ppisar>
Component: perl-IO-Socket-SSLAssignee: perl-maint-list
Status: CLOSED ERRATA QA Contact: Karel Srot <ksrot>
Severity: high Docs Contact: Lenka Špačková <lkuprova>
Priority: unspecified    
Version: 7.2CC: bphinz, briang, creynold, jorton, jplesnik, perl-maint-list, ppisar, psabata, qe-baseos-security
Target Milestone: rcKeywords: FutureFeature, Patch, Regression
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: perl-IO-Socket-SSL-1.94-6.el7 Doc Type: Release Note
Doc Text:
The *IO::Socket::SSL* Perl module now supports restricting of TLS version The *Net:SSLeay* Perl module has been updated to support explicit specification of the TLS protocol versions 1.1 or 1.2 to improve security, and the *IO::Socket::SSL* module has been updated accordingly. When a new *IO::Socket::SSL* object is created, it is now possible to restrict the TLS version to 1.1 or 1.2 by setting the `SSL_version` option to `TLSv1_1` or `TLSv1_2` respectively. Alternatively, `TLSv11` and `TLSv12` can be used. Note that these values are case-sensitive.
Story Points: ---
Clone Of: 1331037 Environment:
Last Closed: 2017-08-01 20:30:01 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On: 1335028    
Bug Blocks: 1298243, 1380363    
Attachments:
Description Flags
Upstream fix ported to RHEL-7 (first part)
none
Upstream fix ported to RHEL-7 (second part) none

Description Petr Pisar 2016-05-11 08:07:24 UTC
+++ This bug was initially created as a clone of Bug #1331037 +++

[...]
  
3. What is the nature and description of the request?  
Currently, perl-Net-SSLeay and perl-IO-Socket-SSL (as shipped in el6) do not allow TLS protocol versions 1.1 or 1.2 to be explicitly specified.

[...]

10. List any affected packages or components.  
perl-IO-Socket-SSL
  
--- Additional comment from Petr Pisar on 2016-05-11 07:59:06 GMT ---

RHEL-7 (perl-IO-Socket-SSL-1.94-3.el7.noarch) is affected.

Comment 1 Petr Pisar 2016-10-06 14:40:50 UTC
Created attachment 1207964 [details]
Upstream fix ported to RHEL-7 (first part)

Comment 2 Petr Pisar 2016-10-06 14:41:28 UTC
Created attachment 1207965 [details]
Upstream fix ported to RHEL-7 (second part)

Comment 3 Petr Pisar 2016-10-06 14:44:42 UTC
Reproducer is in bug #1375525, comment #4. The only difference against RHEL-6 is it does not report the reason for the failure. But this how RHEL-7 behaved even previously, so this not a new bug.

Comment 4 Joe Orton 2017-01-20 08:36:30 UTC
Resolved in 6.8-Z so this is an effective RHEL6->7 regression.

Comment 8 Karel Srot 2017-03-07 08:43:49 UTC
Hello,
on RHEL-6 in case of rejected connection there is a message:
'IO::Socket::SSL:.*SSL connect attempt failed with unknown error.*SSL routines:SSL3_GET_RECORD:wrong version number' 

On RHEL-7 there is no such message when the connection fails.
Is this expected/intentional?

Comment 9 Jitka Plesnikova 2017-03-09 16:32:47 UTC
The reproduce https://bugzilla.redhat.com/show_bug.cgi?id=1375525#c4 describes that the error appears when fix is applied. 

Petr Pisar wrote in comment#3 the error does not report on RHEL-7.

You can see it when you enable debug level 1:

perl -M'IO::Socket::SSL qw(debug1)' -e 'my $cl = IO::Socket::SSL->new(PeerAddr => "localhost:4433", SSL_version => "TLSv1_2") or die $!; print $cl "GET / HTTP/1.0\r\n\r\n";print <$cl>;'

[...]

DEBUG: .../IO/Socket/SSL.pm:552: fatal SSL error: SSL connect attempt failed with unknown error error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
DEBUG: .../IO/Socket/SSL.pm:552: fatal SSL error: SSL connect attempt failed with unknown error error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Died at -e line 1.

Comment 10 Brian Hinz 2017-03-09 18:18:01 UTC
You're not using a supported string for the version.  In IO::Socket::SSL v1.94 the value for TLSv1.2 is "TLSv12".  Use of "TLSv1_1" and "TLSv1_2" was introduced in v1.964 (http://cpansearch.perl.org/src/SULLR/IO-Socket-SSL-1.964/Changes).

Comment 11 Petr Pisar 2017-03-10 07:12:54 UTC
This bug report is about adding support for the values. Both variants without and with an underscore should be available after resolving this bug report.

The test failure discusses in comment #8 is a negative test. It checks that if a client requests TLSv1.2 only but a server does not support it, the connection must fail.

I cannot see any problem.

Comment 12 Karel Srot 2017-03-10 07:37:37 UTC
(In reply to Jitka Plesnikova from comment #9)
> Petr Pisar wrote in comment#3 the error does not report on RHEL-7.
> You can see it when you enable debug level 1:

Thank you, I have missed that note somehow.

Comment 14 errata-xmlrpc 2017-08-01 20:30:01 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2017:1912