Author: markt Date: Mon Aug 10 19:52:17 2015 New Revision: 1695159 URL: http://svn.apache.org/r1695159 Log: OpenSSL cipher mapping in trunk now works (i.e. tests pass) with 1.0.2. Need to test with 1.1.0 - I suspect some 'tweaks' will be required.
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/jsse/openssl/Cipher.java tomcat/trunk/java/org/apache/tomcat/util/net/jsse/openssl/OpenSSLCipherConfigurationParser.java tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TestCipher.java tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TestOpenSSLCipherConfigurationParser.java tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TesterOpenSSL.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/jsse/openssl/Cipher.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/jsse/openssl/Cipher.java?rev=1695159&r1=1695158&r2=1695159&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/jsse/openssl/Cipher.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/jsse/openssl/Cipher.java Mon Aug 10 19:52:17 2015 @@ -4021,7 +4021,7 @@ public enum Cipher { // RC2_128_CBC_WITH_MD5 SSL_CK_RC2_128_CBC_WITH_MD5( -1, - "RC2-MD5", + "RC2-CBC-MD5", KeyExchange.RSA, Authentication.RSA, Encryption.RC2, Modified: tomcat/trunk/java/org/apache/tomcat/util/net/jsse/openssl/OpenSSLCipherConfigurationParser.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/jsse/openssl/OpenSSLCipherConfigurationParser.java?rev=1695159&r1=1695158&r2=1695159&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/jsse/openssl/OpenSSLCipherConfigurationParser.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/jsse/openssl/OpenSSLCipherConfigurationParser.java Mon Aug 10 19:52:17 2015 @@ -485,12 +485,13 @@ public class OpenSSLCipherConfigurationP addListAlias(SRP, filterByKeyExchange(allCiphers, Collections.singleton(KeyExchange.SRP))); initialized = true; // Despite what the OpenSSL docs say, DEFAULT also excludes SSLv2 - addListAlias(DEFAULT, parse("ALL:!eNULL:!aNULL:!SSLv2")); + addListAlias(DEFAULT, parse("ALL:!EXPORT:!eNULL:!aNULL:!SSLv2")); // COMPLEMENTOFDEFAULT is also not exactly as defined by the docs Set<Cipher> complementOfDefault = filterByKeyExchange(all, new HashSet<>(Arrays.asList(KeyExchange.EDH,KeyExchange.EECDH))); complementOfDefault = filterByAuthentication(complementOfDefault, Collections.singleton(Authentication.aNULL)); complementOfDefault.removeAll(aliases.get(eNULL)); complementOfDefault.addAll(aliases.get(Constants.SSL_PROTO_SSLv2)); + complementOfDefault.addAll(aliases.get(EXPORT)); addListAlias(COMPLEMENTOFDEFAULT, complementOfDefault); } Modified: tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TestCipher.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TestCipher.java?rev=1695159&r1=1695158&r2=1695159&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TestCipher.java (original) +++ tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TestCipher.java Mon Aug 10 19:52:17 2015 @@ -23,17 +23,10 @@ import java.util.List; import java.util.Set; import org.junit.Assert; -import org.junit.Assume; -import org.junit.Before; import org.junit.Test; public class TestCipher { - @Before - public void checkVersion() { - Assume.assumeTrue(TesterOpenSSL.IS_EXPECTED_VERSION); - } - /* * Checks that every cipher suite returned by OpenSSL is mapped to at least * one cipher suite that is recognised by JSSE or is a cipher suite known @@ -83,43 +76,10 @@ public class TestCipher { Set<String> availableCipherSuites = TesterOpenSSL.getOpenSSLCiphersAsSet("ALL:eNULL"); Set<String> expectedCipherSuites = new HashSet<>(); for (Cipher cipher : Cipher.values()) { - String openSSLAlias = cipher.getOpenSSLAlias(); - // OpenSSL does not implement any FORTEZZA algorithms so exclude - // them from the expected list - if (openSSLAlias.contains("FZA")) { - continue; - } - // GOST algorithms are not enabled by default and no JSSE - // implementation supports them so exclude them from the expected - // list - if (openSSLAlias.contains("GOST")) { - continue; - } - // OpenSSL does not enable the experimental EXP1024 and - // DHE-DSS-RC4-SHA cipher suites unless the source is explicitly - // patched so exclude them from the expected list - if (openSSLAlias.contains("EXP1024")) { - continue; - } - if (openSSLAlias.contains("DHE-DSS-RC4-SHA")) { - continue; - } - // OpenSSL removed (broken) support for EXP-DH-RSA-DES-CBC-SHA - // and EXP-DH-DSS-DES-CBC-SHA on 2015-05-23. - if (openSSLAlias.contains("EXP-DH-")) { - continue; - } - // RC2-MD5 is not referenced in the OpenSSL source so exclude it - // from the expected list - if (openSSLAlias.contains("RC2-MD5")) { - continue; - } - // As of OpenSSL 1.1.0, SSLv2 ciphers are not supported so exclude - // them from the expected list - if (cipher.getProtocol().equals(Protocol.SSLv2)) { + if (TesterOpenSSL.OPENSSL_UNIMPLEMENTED_CIPHERS.contains(cipher)) { continue; } - expectedCipherSuites.add(openSSLAlias + "+" + + expectedCipherSuites.add(cipher.getOpenSSLAlias() + "+" + cipher.getProtocol().getOpenSSLName()); } Modified: tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TestOpenSSLCipherConfigurationParser.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TestOpenSSLCipherConfigurationParser.java?rev=1695159&r1=1695158&r2=1695159&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TestOpenSSLCipherConfigurationParser.java (original) +++ tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TestOpenSSLCipherConfigurationParser.java Mon Aug 10 19:52:17 2015 @@ -19,19 +19,11 @@ package org.apache.tomcat.util.net.jsse. import java.util.List; import org.junit.Assert; -import org.junit.Assume; -import org.junit.Before; import org.junit.Ignore; import org.junit.Test; public class TestOpenSSLCipherConfigurationParser { - @Before - public void checkVersion() { - Assume.assumeTrue(TesterOpenSSL.IS_EXPECTED_VERSION); - } - - @Test public void testDEFAULT() throws Exception { testSpecification("DEFAULT"); Modified: tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TesterOpenSSL.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TesterOpenSSL.java?rev=1695159&r1=1695158&r2=1695159&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TesterOpenSSL.java (original) +++ tomcat/trunk/test/org/apache/tomcat/util/net/jsse/openssl/TesterOpenSSL.java Mon Aug 10 19:52:17 2015 @@ -19,7 +19,6 @@ package org.apache.tomcat.util.net.jsse. import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -30,45 +29,196 @@ import org.apache.tomcat.util.http.fileu public class TesterOpenSSL { - public static final boolean IS_EXPECTED_VERSION; + public static final int VERSION; - public static final Set<Cipher> OPENSSL_UNIMPLEMENTED_CIPHERS = - Collections.unmodifiableSet(new HashSet<>(Arrays.asList( - // The following ciphers are not implemented in an OpenSSL - // version - Cipher.SSL2_DES_64_CBC_WITH_MD5, - Cipher.SSL_CK_RC2_128_CBC_WITH_MD5, - // The following are not implemented in 1.1.x onwards. They - // are implemented in 1.0.x and earlier - Cipher.SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5, - Cipher.SSL_CK_RC4_128_WITH_MD5, - Cipher.SSL2_DES_64_CBC_WITH_MD5, - Cipher.SSL2_DES_192_EDE3_CBC_WITH_MD5, - Cipher.SSL2_IDEA_128_CBC_WITH_MD5, - Cipher.SSL2_RC4_128_EXPORT40_WITH_MD5, - Cipher.TLS_RSA_EXPORT1024_WITH_RC4_56_MD5, - Cipher.TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5, - Cipher.TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA, - Cipher.TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA, - Cipher.TLS_RSA_EXPORT1024_WITH_RC4_56_SHA, - Cipher.TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA, - Cipher.TLS_DHE_DSS_WITH_RC4_128_SHA, - // The following have been removed from OpenSSL on 2015-05-23 - Cipher.TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA, - Cipher.TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA))); + public static final Set<Cipher> OPENSSL_UNIMPLEMENTED_CIPHERS; static { // Note: The tests are configured for the OpenSSL 1.1.0 development // branch. Running with a different version is likely to trigger // failures. - String expected_version = System.getProperty("tomcat.test.openssl.version", ""); String versionString = null; try { versionString = executeOpenSSLCommand("version"); } catch (IOException e) { versionString = ""; } - IS_EXPECTED_VERSION = versionString.startsWith("OpenSSL " + expected_version); + if (versionString.startsWith("OpenSSL 1.1.0")) { + VERSION = 10100; + } else if (versionString.startsWith("OpenSSL 1.0.2")) { + VERSION = 10002; + } else if (versionString.startsWith("OpenSSL 1.0.1")) { + VERSION = 10001; + } else if (versionString.startsWith("OpenSSL 1.0.0")) { + VERSION = 10000; + } else if (versionString.startsWith("OpenSSL 0.9.8")) { + VERSION = 908; + } else { + // Unknown OpenSSL version + throw new IllegalStateException("Unknown OpenSSL version " + versionString); + } + + HashSet<Cipher> unimplemented = new HashSet<>(); + + // Note: The following lists are intended to be aligned with the most + // recent release of each OpenSSL release branch + + // TODO Validate this for all OpenSSL versions + // 0.9.8 - TODO + // 1.0.0 - TODO + // 1.0.1 - TODO + // 1.0.2 - Done + // 1.1.0 - TODO + + // These were removed in 0.9.8 (or earlier) so won't be available in any + // supported version. + unimplemented.add(Cipher.TLS_DHE_DSS_WITH_RC4_128_SHA); + unimplemented.add(Cipher.TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA); + unimplemented.add(Cipher.TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA); + unimplemented.add(Cipher.TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5); + unimplemented.add(Cipher.TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA); + unimplemented.add(Cipher.TLS_RSA_EXPORT1024_WITH_RC4_56_SHA); + unimplemented.add(Cipher.TLS_RSA_EXPORT1024_WITH_RC4_56_MD5); + + if (VERSION < 10000) { + // These were implemented in 1.0.0 so won't be available in any + // earlier version + } else { + // These were removed in 1.0.0 so won't be available from that + // version onwards. + } + + + if (VERSION < 10001) { + // These were added in 1.0.1 so won't be available in any earlier + // version + unimplemented.add(Cipher.TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256); + unimplemented.add(Cipher.TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256); + unimplemented.add(Cipher.TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_PSK_WITH_AES_128_GCM_SHA256); + unimplemented.add(Cipher.TLS_PSK_WITH_AES_256_GCM_SHA384); + } else { + // These were removed in 1.0.1 so won't be available from that + // version onwards. + unimplemented.add(Cipher.TLS_RSA_EXPORT1024_WITH_RC4_56_MD5); + unimplemented.add(Cipher.TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5); + unimplemented.add(Cipher.TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA); + unimplemented.add(Cipher.TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA); + unimplemented.add(Cipher.TLS_RSA_EXPORT1024_WITH_RC4_56_SHA); + unimplemented.add(Cipher.TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA); + unimplemented.add(Cipher.TLS_DHE_DSS_WITH_RC4_128_SHA); + } + + if (VERSION < 10002) { + // These were implemented in 1.0.2 so won't be available in any + // earlier version + } else { + // These were removed in 1.0.2 so won't be available from that + // version onwards. + unimplemented.add(Cipher.TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA); + unimplemented.add(Cipher.TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA); + } + + if (VERSION < 10100) { + // These were implemented in 1.1.0 so won't be available in any + // earlier version + unimplemented.add(Cipher.TLS_PSK_WITH_NULL_SHA); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_NULL_SHA); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_NULL_SHA); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_AES_128_GCM_SHA256); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_AES_256_GCM_SHA384); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_AES_128_GCM_SHA256); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_AES_256_GCM_SHA384); + unimplemented.add(Cipher.TLS_PSK_WITH_AES_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_PSK_WITH_AES_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_PSK_WITH_NULL_SHA256); + unimplemented.add(Cipher.TLS_PSK_WITH_NULL_SHA384); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_AES_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_AES_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_NULL_SHA256); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_NULL_SHA384); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_AES_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_AES_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_NULL_SHA256); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_NULL_SHA384); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_RC4_128_SHA); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_AES_128_CBC_SHA); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_AES_256_CBC_SHA); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_RC4_128_SHA); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_AES_128_CBC_SHA); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_AES_256_CBC_SHA); + unimplemented.add(Cipher.TLS_ECDHE_PSK_WITH_RC4_128_SHA); + unimplemented.add(Cipher.TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA); + unimplemented.add(Cipher.TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA); + unimplemented.add(Cipher.TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA); + unimplemented.add(Cipher.TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_ECDHE_PSK_WITH_NULL_SHA); + unimplemented.add(Cipher.TLS_ECDHE_PSK_WITH_NULL_SHA256); + unimplemented.add(Cipher.TLS_ECDHE_PSK_WITH_NULL_SHA384); + unimplemented.add(Cipher.TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256); + unimplemented.add(Cipher.TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256); + unimplemented.add(Cipher.TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384); + unimplemented.add(Cipher.TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256); + unimplemented.add(Cipher.TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256); + unimplemented.add(Cipher.TLS_PSK_WITH_AES_128_GCM_SHA256); + unimplemented.add(Cipher.TLS_PSK_WITH_AES_256_GCM_SHA384); + unimplemented.add(Cipher.TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256); + } else { + // These were removed in 1.1.0 so won't be available from that + // version onwards. + unimplemented.add(Cipher.SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5); + unimplemented.add(Cipher.SSL_CK_RC4_128_WITH_MD5); + unimplemented.add(Cipher.SSL2_DES_192_EDE3_CBC_WITH_MD5); + unimplemented.add(Cipher.SSL2_DES_64_CBC_WITH_MD5); + unimplemented.add(Cipher.SSL2_IDEA_128_CBC_WITH_MD5); + unimplemented.add(Cipher.SSL2_RC4_128_EXPORT40_WITH_MD5); + unimplemented.add(Cipher.SSL_CK_RC2_128_CBC_WITH_MD5); + } + OPENSSL_UNIMPLEMENTED_CIPHERS = Collections.unmodifiableSet(unimplemented); } @@ -106,6 +256,8 @@ public class TesterOpenSSL { // OpenSSL should have returned one cipher per line String ciphers[] = stdout.split("\n"); for (String cipher : ciphers) { + // Handle rename for 1.1.0 onwards + cipher = cipher.replaceAll("EDH", "DHE"); if (first) { first = false; } else { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org