Skip to content

Commit 17657c0

Browse files
authored
Remove TLSv1.1 from default protocols (#121731)
This commit removes "TLSv1.1" from the list of default protocols in Elasticsearch (starting with ES9.0) TLSv1.1 has been deprecated by the IETF since March 2021 This affects a variety of TLS contexts, include - The HTTP Server (Rest API) - Transport protocol (including CCS and CCR) - Outgoing connections for features that have configurable SSL settings. This includes - reindex - watcher - security realms (SAML, OIDC, LDAP, etc) - monitoring exporters - inference services In practice, however, TLSv1.1 has been disabled in most Elasticsearch deployments since around 7.12 because most JDK releases have disabled TLSv1.1 (by default) starting in April 2021 That is, if you run a default installation of Elasticsearch (for any currently supported version of ES) that uses the bundled JVM then TLSv1.1 is already disabled. And, since ES9+ requires JDK21+, all supported JDKs ship with TLSv1.1 disabled by default. In addition, incoming HTTP connections to Elastic Cloud deployments have required TLSv1.2 or higher since April 2020 This change simply makes it clear that Elasticsearch does not attempt to enable TLSv1.1 and administrators who wish to use that protocol will need to explicitly enable it in both the JVM and in Elasticsearch. Resolves: #108057
1 parent f097b6e commit 17657c0

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

docs/changelog/121731.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
pr: 121731
2+
summary: Remove TLSv1.1 from default protocols
3+
area: TLS
4+
type: breaking
5+
issues: []
6+
breaking:
7+
title: Remove TLSv1.1 from default protocols
8+
area: Cluster and node setting
9+
details: "TLSv1.1 is no longer enabled by default. Prior to version 9.0, Elasticsearch\
10+
\ would attempt to enable TLSv1.1 if the JDK supported it. In most cases, including\
11+
\ all cases where Elasticsearch 8 was running with the bundled JDK, the JDK would\
12+
\ not support TLSv1.1, so that protocol would not be available in Elasticsearch.\
13+
\ However, if Elasticsearch was running on an old JDK or a JDK that have been\
14+
\ reconfigured to support TLSv1.1, then the protocol would automatically be available\
15+
\ within Elasticsearch. As of Elasticsearch 9.0, this is no longer true. If you\
16+
\ wish to enable TLSv1.1 then you must enable it within the JDK and also enable\
17+
\ it within Elasticsearch by using the `ssl.supported_protocols` setting."
18+
impact: "Most users will not be impacted. If your Elastisearch 8 cluster was using\
19+
\ a custom JDK and you relied on TLSv1.1, then you will need to explicitly enable\
20+
\ TLSv1.1 within Elasticsearch (as well as enabling it within your JDK)"
21+
notable: false

libs/ssl-config/src/main/java/org/elasticsearch/common/ssl/SslConfigurationLoader.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313

1414
import java.nio.file.Path;
1515
import java.security.KeyStore;
16-
import java.util.Arrays;
17-
import java.util.Collections;
1816
import java.util.List;
1917
import java.util.Objects;
2018
import java.util.Set;
@@ -25,7 +23,6 @@
2523
import javax.net.ssl.TrustManagerFactory;
2624

2725
import static org.elasticsearch.common.ssl.KeyStoreUtil.inferKeyStoreType;
28-
import static org.elasticsearch.common.ssl.SslConfiguration.ORDERED_PROTOCOL_ALGORITHM_MAP;
2926
import static org.elasticsearch.common.ssl.SslConfigurationKeys.CERTIFICATE;
3027
import static org.elasticsearch.common.ssl.SslConfigurationKeys.CERTIFICATE_AUTHORITIES;
3128
import static org.elasticsearch.common.ssl.SslConfigurationKeys.CIPHERS;
@@ -63,11 +60,7 @@
6360
*/
6461
public abstract class SslConfigurationLoader {
6562

66-
static final List<String> DEFAULT_PROTOCOLS = Collections.unmodifiableList(
67-
ORDERED_PROTOCOL_ALGORITHM_MAP.containsKey("TLSv1.3")
68-
? Arrays.asList("TLSv1.3", "TLSv1.2", "TLSv1.1")
69-
: Arrays.asList("TLSv1.2", "TLSv1.1")
70-
);
63+
static final List<String> DEFAULT_PROTOCOLS = List.of("TLSv1.3", "TLSv1.2");
7164

7265
private static final List<String> JDK12_CIPHERS = List.of(
7366
// TLSv1.3 cipher has PFS, AEAD, hardware support

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackSettings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ public static Setting<String> defaultStoredSecureTokenHashAlgorithmSetting(
317317
}, Property.NodeScope);
318318
}
319319

320-
public static final List<String> DEFAULT_SUPPORTED_PROTOCOLS = Arrays.asList("TLSv1.3", "TLSv1.2", "TLSv1.1");
320+
public static final List<String> DEFAULT_SUPPORTED_PROTOCOLS = Arrays.asList("TLSv1.3", "TLSv1.2");
321321

322322
public static final SslClientAuthenticationMode CLIENT_AUTH_DEFAULT = SslClientAuthenticationMode.REQUIRED;
323323
public static final SslClientAuthenticationMode HTTP_CLIENT_AUTH_DEFAULT = SslClientAuthenticationMode.NONE;

0 commit comments

Comments
 (0)