|
@@ -19,6 +19,8 @@
|
|
|
|
|
|
package org.elasticsearch.common.ssl;
|
|
|
|
|
|
+import org.elasticsearch.bootstrap.JavaVersion;
|
|
|
+
|
|
|
import javax.net.ssl.KeyManagerFactory;
|
|
|
import javax.net.ssl.TrustManagerFactory;
|
|
|
import java.nio.file.Path;
|
|
@@ -66,10 +68,7 @@ public abstract class SslConfigurationLoader {
|
|
|
|
|
|
static final List<String> DEFAULT_PROTOCOLS = List.of("TLSv1.3", "TLSv1.2", "TLSv1.1");
|
|
|
|
|
|
- /**
|
|
|
- * This list has been created with ordering
|
|
|
- */
|
|
|
- static final List<String> DEFAULT_CIPHERS = List.of(
|
|
|
+ private static final List<String> JDK11_CIPHERS = List.of(
|
|
|
"TLS_AES_256_GCM_SHA384", "TLS_AES_128_GCM_SHA256", // TLSv1.3 cipher has PFS, AEAD, hardware support
|
|
|
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", // PFS, AEAD, hardware support
|
|
|
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", // PFS, AEAD, hardware support
|
|
@@ -80,6 +79,23 @@ public abstract class SslConfigurationLoader {
|
|
|
"TLS_RSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_128_GCM_SHA256", // AEAD, hardware support
|
|
|
"TLS_RSA_WITH_AES_256_CBC_SHA256", "TLS_RSA_WITH_AES_128_CBC_SHA256", // hardware support
|
|
|
"TLS_RSA_WITH_AES_256_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA"); // hardware support
|
|
|
+
|
|
|
+ private static final List<String> JDK12_CIPHERS = List.of(
|
|
|
+ "TLS_AES_256_GCM_SHA384", "TLS_AES_128_GCM_SHA256", // TLSv1.3 cipher has PFS, AEAD, hardware support
|
|
|
+ "TLS_CHACHA20_POLY1305_SHA256", // TLSv1.3 cipher has PFS, AEAD
|
|
|
+ "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", // PFS, AEAD, hardware support
|
|
|
+ "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", // PFS, AEAD, hardware support
|
|
|
+ "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256", // PFS, AEAD
|
|
|
+ "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", // PFS, hardware support
|
|
|
+ "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", // PFS, hardware support
|
|
|
+ "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", // PFS, hardware support
|
|
|
+ "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", // PFS, hardware support
|
|
|
+ "TLS_RSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_128_GCM_SHA256", // AEAD, hardware support
|
|
|
+ "TLS_RSA_WITH_AES_256_CBC_SHA256", "TLS_RSA_WITH_AES_128_CBC_SHA256", // hardware support
|
|
|
+ "TLS_RSA_WITH_AES_256_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA"); // hardware support
|
|
|
+
|
|
|
+ static final List<String> DEFAULT_CIPHERS =
|
|
|
+ JavaVersion.current().compareTo(JavaVersion.parse("12")) > -1 ? JDK12_CIPHERS : JDK11_CIPHERS;
|
|
|
private static final char[] EMPTY_PASSWORD = new char[0];
|
|
|
|
|
|
private final String settingPrefix;
|