JDK 版本支持的 SSL/TLS 版本
编辑JDK 版本支持的 SSL/TLS 版本
编辑Elasticsearch 依赖于您的 JDK 中的 SSL 和 TLS 实现。
不同的 JDK 版本支持不同的 SSL 版本,这可能会影响 Elasticsearch 的运行方式。
此支持适用于在 JDK 中的默认 JSSE 提供程序上运行时。配置为使用 FIPS 140-2 安全提供程序的 JVM 可能具有自定义的 TLS 实现,该实现可能支持与该列表不同的 TLS 协议版本。
请查看安全提供程序的发行说明以获取有关 TLS 支持的信息。
-
SSLv3
- SSL v3 在所有 Elasticsearch 兼容的 JDK 上都受支持,但默认情况下处于禁用状态。请参阅 在您的 JDK 上启用其他 SSL/TLS 版本。
-
TLSv1
- TLS v1.0 在所有 Elasticsearch 兼容的 JDK 上都受支持。一些较新的 JDK(包括与 Elasticsearch 捆绑在一起的 JDK)默认情况下会禁用 TLS v1.0。请参阅 在您的 JDK 上启用其他 SSL/TLS 版本。
-
TLSv1.1
- TLS v1.1 在所有 Elasticsearch 兼容的 JDK 上都受支持。一些较新的 JDK(包括与 Elasticsearch 捆绑在一起的 JDK)默认情况下会禁用 TLS v1.1。请参阅 在您的 JDK 上启用其他 SSL/TLS 版本。
-
TLSv1.2
- TLS v1.2 在所有 Elasticsearch 兼容的 JDK 上都受支持。它在 Elasticsearch 支持的所有 JDK(包括捆绑的 JDK)上默认启用。
-
TLSv1.3
-
TLS v1.3 在 JDK11 及更高版本以及 8u261 之后的 JDK8 版本(包括 Elasticsearch 支持的每个 JDK8 发行版的最新版本)上受支持。TLS v1.3 在与 Elasticsearch 捆绑在一起的 JDK 上受支持并默认启用。
尽管 Elasticsearch 支持在较旧的 JDK8 版本上运行而无需 TLS v1.3,但我们建议您升级到包含 TLS v1.3 的 JDK 版本以获得更好的支持和更新。
在您的 JDK 上启用其他 SSL/TLS 版本
编辑JDK 支持的 SSL/TLS 版本集由作为 JDK 安装一部分安装的 Java 安全属性文件控制。
此配置文件列出了在该 JDK 中禁用的 SSL/TLS 算法。请完成以下步骤以从该列表中删除 TLS 版本并在您的 JDK 中使用它。
- 找到您的 JDK 的配置文件。
- 复制该文件中的
jdk.tls.disabledAlgorithms
设置,并将其添加到 Elasticsearch 配置目录中的自定义配置文件中。 - 在自定义配置文件中,从
jdk.tls.disabledAlgorithms
中删除要使用的 TLS 版本的值。 - 配置 Elasticsearch 以将自定义系统属性传递给 JDK,以便使用您的自定义配置文件。
找到您的 JDK 的配置文件
编辑对于 Elasticsearch 捆绑的 JDK,配置文件位于 Elasticsearch 主目录 ($ES_HOME
) 的子目录中
- Linux:
$ES_HOME/jdk/conf/security/java.security
- Windows:
$ES_HOME/jdk/conf/security/java.security
- macOS:
$ES_HOME/jdk.app/Contents/Home/conf/security/java.security
对于 JDK8,配置文件位于 Java 安装的 jre/lib/security
目录中。如果 $JAVA_HOME
指向用于运行 Elasticsearch 的 JDK 的主目录,则配置文件将位于
-
$JAVA_HOME/jre/lib/security/java.security
对于 JDK11 或更高版本,配置文件位于 Java 安装的 conf/security
目录中。如果 $JAVA_HOME
指向用于运行 Elasticsearch 的 JDK 的主目录,则配置文件将位于
-
$JAVA_HOME/conf/security/java.security
复制 disabledAlgorithms 设置
编辑在 JDK 配置文件中,有一行以 jdk.tls.disabledAlgorithms=
开头。此设置控制在您的 JDK 中禁用哪些协议和算法。该设置的值通常跨越多行。
例如,在 OpenJDK 16 中,该设置是
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL
在您的 Elasticsearch 配置目录中创建一个名为 es.java.security
的新文件。将 JDK 的默认配置文件中的 jdk.tls.disabledAlgorithms
设置复制到 es.java.security
中。您无需复制任何其他设置。
启用所需的 TLS 版本
编辑编辑 Elasticsearch 配置目录中的 es.java.security
文件,并修改 jdk.tls.disabledAlgorithms
设置,以便不再列出要使用的任何 SSL 或 TLS 版本。
例如,要在 OpenJDK 16 上启用 TLSv1.1(它使用前面显示的 jdk.tls.disabledAlgorithms
设置),es.java.security
文件将包含先前禁用的 TLS 算法,除了 TLSv1.1
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL
启用您的自定义安全配置
编辑要启用您的自定义安全策略,请在 Elasticsearch 配置目录中的 jvm.options.d
目录中添加一个文件。
要启用您的自定义安全策略,请在 Elasticsearch 配置目录的 jvm.options.d 目录中创建一个名为 java.security.options
的文件,内容如下
-Djava.security.properties=/path/to/your/es.java.security
在 Elasticsearch 中启用 TLS 版本
编辑可以通过 ssl.supported_protocols
设置 在 Elasticsearch 中启用和禁用 SSL/TLS 版本。
Elasticsearch 仅支持 底层 JDK 中启用的 TLS 版本。如果您将 ssl.supported_procotols
配置为包含在您的 JDK 中未启用的 TLS 版本,则该版本将被静默忽略。
类似地,除非将 JDK 中启用的 TLS 版本配置为 Elasticsearch 中的 ssl.supported_protocols
之一,否则不会使用它。