I have spent the past few days troubleshooting an SSL handshake issue with JDK 
1.6 clients connecting to SOAP Web Services running on Tomcat 7.0.69/JDK 
1.7.0_101/RHEL 6.7.  These clients worked fine with Tomcat 7.0.68, so I checked 
the change log for 7.0.69.  It mentions:

Limit the default TLS ciphers for JSSE (BIO, NIO) and OpenSSL (APR) to this 
currently considered secure. (markt)

We are configured to use the AprLifecycleListener for our SSL Listener.  

What is occurring is the Web Service clients who run JDK 1.6 (both Oracle and 
IBM clients experience this) cannot connect because none of the ciphers Tomcat 
presents are supported.  In Tomcat 7.0.68 (and 8.0.36), the following cipher 
gets selected through SSL negotiation for JDK 1.6 clients:  
SSL_RSA_WITH_AES_128_CBC_SHA.

I compared the source code from .68 and .69, and found this change in 
JSSESocketFactory.java - Line 200-208:

// Remove kRSA ciphers when running on Java 7 or above. Can't
// remove them for Java 6 since they are likely to be the only
// ones left
if (JreCompat.isJre7Available() &&
        (cipher.toUpperCase(Locale.ENGLISH).startsWith("TLS_RSA_") ||
         cipher.toUpperCase(Locale.ENGLISH).startsWith("SSL_RSA_"))) {
    log.debug(sm.getString("jsse.excludeDefaultCipher", cipher));
    continue;
}

This code appears to remove the working cipher used for JDK 1.6 clients - 
SSL_RSA_WITH_AES_128_CBC_SHA.  This code only considers the JRE Tomcat is 
running, but does not/cannot consider what JRE the client is using.  I tested 
this with a JDK 1.7 client and it works fine because they select the 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA cipher.  This may not be an issue for 
UI/Browser Apps or applications connecting through a Web Server, but it has a 
signifiant impact on Java-based Web Service clients.  I could not find any work 
arounds other then to revert to Tomcat 7.0.68 and plan to upgrade to Tomcat 8 
in the near future.  

Hoping this is something that can either be removed or configured in future 
releases.

Thanks much for your support!

Bryan Anderson 

Reply via email to