如果服务器不支持所使用的协议,JSSE 是否会实施回退?

Does JSSE implement a fallback if the server does not support the used protocol?

我只是在 java 中收集一些关于 SSL/TSL 的信息,因为我们正在使用 netty,甚至不知道我们当前使用的是什么 TLS 协议。我们的应用程序 运行s 在 Java7 上,因此默认情况下 SSLSocket 将 运行 和 TLS1 并且甚至不会激活 SSL3。我现在知道了。

假设我的客户端 运行 在 Java8 上(默认使用 TLS1.2),目标服务器仅支持 TLS1.1,现在 JSSE 使用自动回退路由与 TLS1.1 协商连接?还是我必须专门实施这个?如果是,我必须在哪里做?

我在 JSSE 文档中找不到明确的观点。

is JSSE now using an automatic fallback ...?

不必。

TLS 客户端发送它可以支持的最高版本的 TLS 协议。服务器回复它要使用的 TLS 版本,该版本是服务器支持的最高版本和客户端发送的版本中较低的一个。如果客户端支持该版本,则握手继续。所以实际上是服务器做后备。

这都是在RFC 2246中指定的。这不是 Java.

特有的