代码对比
✕ Java 8
SSLContext ctx =
SSLContext.getInstance("TLSv1.2");
ctx.init(null, trustManagers, null);
SSLSocketFactory factory =
ctx.getSocketFactory();
// Must specify protocol version
✓ Java 11+
// TLS 1.3 is the default!
var client = HttpClient.newBuilder()
.sslContext(SSLContext.getDefault())
.build();
// Already using TLS 1.3
发现此代码有问题? 告诉我们。
为什么现代方式更好
更安全
TLS 1.3 删除了过时的密码套件和握手模式。
更快握手
TLS 1.3 将往返次数从 2 减少到 1。
无配置
现有 HTTPS 代码自动受益。
旧方式
手动 TLS 配置
现代方式
TLS 1.3 默认
自 JDK
11
难度
中级
JDK 支持
默认 TLS 1.3
可用
自 JDK 11 起广泛可用(2018 年 9 月)
工作原理
Java 11 添加了 TLS 1.3 支持并将其设为首选协议。SSLContext 自动协商 TLS 1.3(如果双方都支持),使现有代码更加安全,无需更改。
相关文档