日志显示 TLSv1 而不是 SSLv3

Log displays TLSv1 instead of SSLv3

我使用 -Djavax.net.debug=all 选项在我的应用程序中启用了日志。编写的代码应该使用 SSLv3 协议,但在我检查它时在日志中显示为 ::

*** ClientHello, TLSv1

*** ServerHello, TLSv1

据我了解,客户端和服务器使用 TLSv1 进行握手,但由于我在启动套接字时在我的代码中使用了 SSLv3,理想情况下它应该打印 SSLv3 而不是 TLSv1。

下面是我使用的代码片段:

SSLContextBuilder builder = new SSLContextBuilder();
builder.useProtocol("SSLv3");

SSLContext sslContext = builder.build();

谁能解释一下同样的原因,或者还有什么我遗漏的。补充一下,我在 Java 7.

服务器很可能不支持 SSLv3(出于安全考虑,现在推荐配置),因此库使用支持最少的 TLS 版本。

UPD: 似乎 hello 格式没有说明实际上将使用什么协议。 Java docs:

有一些东西

Currently, the SSLv3, TLSv1, and TLSv1.1 protocols allow you to send SSLv3, TLSv1, and TLSv1.1 hellos encapsulated in an SSLv2 format hello. For more details on the reasons for allowing this compatibility in these protocols, see Appendix E in the appropriate RFCs (previously listed).

Note that some SSL/TLS servers do not support the v2 hello format and require that client hellos conform to the SSLv3 or TLSv1 client hello formats.

The SSLv2Hello option controls the SSLv2 encapsulation. If SSLv2Hello is disabled on the client, then all outgoing messages will conform to the SSLv3/TLSv1 client hello format. If SSLv2Hello is disabled on the server, then all incoming messages must conform to the SSLv3/TLSv1 client hello format.