服务连接启用 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 禁令(必需)
- 找到 JDK 的
java.security文件- 在 Windows 上,默认路径是:
$JAVA_HOME/conf/security/java.security - 在 Linux 上,默认路径是:
%JAVA_HOME%\conf\security\java.security
- 在 Windows 上,默认路径是:
- 搜索
jdk.tls.disabledAlgorithms属性 - 从属性的值列表中删除 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 应用,请谨慎操作。
