openjdk team mailing list archive
-
openjdk team
-
Mailing list archive
-
Message #11176
[Bug 1482924] Re: Regressions due to USN-2696-1
JDK6 is not working as expected. See my test programs above posted in
previous comments.
Actual result:
---
$ java -version
java version "1.6.0_36"
OpenJDK Runtime Environment (IcedTea6 1.13.8) (6b36-1.13.8-0ubuntu2~ppa2~snapshot20150911020748)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
$ java TLSVersions
java.vendor java.version proto enabledProtocols
Sun Microsystems Inc. 1.6.0_36 TLSv1.2 java.security.NoSuchAlgorithmException: TLSv1.2 SSLContext not available
Sun Microsystems Inc. 1.6.0_36 TLSv1.1 TLSv1,TLSv1.1
Sun Microsystems Inc. 1.6.0_36 TLSv1 TLSv1
Sun Microsystems Inc. 1.6.0_36 TLS TLSv1
Sun Microsystems Inc. 1.6.0_36 SSL TLSv1
---
Expected result:
---
$ java TLSVersions
java.vendor java.version proto enabledProtocols
Sun Microsystems Inc. 1.6.0_36 TLSv1.2 java.security.NoSuchAlgorithmException: TLSv1.2 SSLContext not available
Sun Microsystems Inc. 1.6.0_36 TLSv1.1 TLSv1,TLSv1.1
Sun Microsystems Inc. 1.6.0_36 TLSv1 TLSv1
Sun Microsystems Inc. 1.6.0_36 TLS TLSv1,TLSv1.1
Sun Microsystems Inc. 1.6.0_36 SSL TLSv1
---
A failure to connect result can also be seen if you take TLSSimple.java
and edit socketFactory.createSocket( "www.google.com"... to point to
some server that has TLSv1.0 entirely disabled. The point is that
SSLContext.getInstance( "TLS" ) should return a context that supports a
v1.1 hello because SSLContext.getInstance( "TLS" ) is not version-
specific and should return a default instance. This is the approach that
JDK7 has taken.
--
You received this bug notification because you are a member of OpenJDK,
which is subscribed to openjdk-7 in Ubuntu.
https://bugs.launchpad.net/bugs/1482924
Title:
Regressions due to USN-2696-1
Status in openjdk-6 package in Ubuntu:
New
Status in openjdk-7 package in Ubuntu:
New
Bug description:
Due to [CBCATT], some server administrators (including the webservices
gateway for a major airline reservations provider) choose to disable
CBC ciphersuites unless the protocol level is TLSv1.1 or later;
[TLS1.1] introduced an explicit CBC IV to guard against such attacks.
(See [TLS1.1] section 1.1) On such servers, disabling all CBC
ciphersuites may leave only RC4 as a trusted cipher.
JDK7 introduced support for TLSv1.2, but chose not to enable it by
default, due to a policy of not changing such defaults in minor
revisions. JDK8 enables TLSv1.2 by default.
On Ubuntu, due to USN-2696-1, starting with the openjdk-7-jre-7u79-2.5.6-0ubuntu1.12.04.1 package, RC4 is disabled by default but the protocol default remains TLSv1.0. This can leave no remaining trusted ciphers, and
negotiation can fail.
Workaround: on OpenJDK7, it is possible to either use
SSLContext.getInstance("TLSv1.2") or re-enable RC4 via
SSLSocket.setEnabledCipherSuites(), but neither workaround is viable
if one doesn't have access to 3rd-party source code.
References:
[TLS1.1] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.1", RFC 4346, April 2006.
https://www.ietf.org/rfc/rfc4346.txt
[CBCATT] Moeller, B., "Security of CBC Ciphersuites in SSL/TLS:
Problems and Countermeasures",
http://www.openssl.org/~bodo/tls-cbc.txt.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/openjdk-6/+bug/1482924/+subscriptions
References