Skip to content

服务连接启用 TLS v1.0 / v1.1 / v1.3 ​

默认情况下,JDK 17 启用 TLSv1.2 和 TLSv1.3,并优先协商 TLSv1.3。JDK 8 默认启用 TLSv1.2。

TLS v1.3 启用配置 ​

TLS v1.3 是 TLS v1.2 的重大升级,核心改进:更快的连接速度、更强的默认安全性。

客户端(应用连接外部服务) ​

  • 仅启用 TLSv1.3
shell
-Djdk.tls.client.protocols=TLSv1.3
-Dhttps.protocols=TLSv1.3
  • 推荐同时启用 TLSv1.2 和 TLSv1.3,以兼容仅支持 TLSv1.2 的服务。
shell
-Djdk.tls.client.protocols=TLSv1.2,TLSv1.3
-Dhttps.protocols=TLSv1.2,TLSv1.3
  • -Djdk.tls.client.protocols:设置 JVM 默认客户端协议,影响使用默认 SSLContext 的 JSSE 客户端(如 HttpsURLConnection、SSLSocket)。
    不会覆盖第三方库(Apache HttpClient、OkHttp、Netty 等)自行配置的协议。
  • -Dhttps.protocols:仅对 HttpsURLConnection 及其封装(如 URL.openStream())生效。

系统中配置参数 ​

打开 项目 > 设置 > 主要设置 > 服务启动选项

bash
-Dhttps.protocols=TLSv1.3 -Djdk.tls.client.protocols=TLSv1.3

TLS v1.0 或 TLS v1.1 启用配置 ​

安全警告:TLSv1.0/1.1 存在 POODLE、BEAST 等已知漏洞,PCI DSS 等合规标准已禁止使用。
仅作为与无法升级的遗留系统集成的临时手段,并尽快推动对端升级。

从 JDK 11.0.11(及 JDK 8u291 等)开始,TLSv1 和 TLSv1.1 默认在 jdk.tls.disabledAlgorithms 中被禁用。

修改 java.security 文件解除 JVM 禁令(必需) ​

  1. 找到 JDK 的 java.security 文件
    • 在 Windows 上,默认路径是:$JAVA_HOME/conf/security/java.security
    • 在 Linux 上,默认路径是:%JAVA_HOME%\conf\security\java.security
  2. 搜索 jdk.tls.disabledAlgorithms 属性
  3. 从属性的值列表中删除 TLSv1 和/或 TLSv1.1

修改前:

text
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, ...

修改后(同时启用 TLSv1.0 和 TLSv1.1):

text
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, ...

重要:修改后需重启 JVM 才能生效。此修改会影响该 JDK 下运行的所有 Java 应用,请谨慎操作。