为什么Java的SSSocket发送版本2客户端hello?
该方法返回以下内容:。事实上,当我调用并打开SSL调试时,我看到使用了v2客户端hello:SSLSocket.getEnabledProtocols()
[SSLv2Hello, SSLv3, TLSv1]
connect()
main, WRITE: TLSv1 Handshake, length = 81
main, WRITE: SSLv2 client hello message, length = 110
但是我发现了两个(公认是旧的)引用,说JSSE不支持SSL版本2:
来自 Java 中的基础网络:
“SSLv2Hello”是一个伪协议,它允许Java使用SSLv2“hello message”启动握手。这不会导致使用SSLv2协议,Java根本不支持SSLv2协议。
来自JSSE参考指南:
J2SDK 1.4 及更高版本中的 JSSE 实现实现了 SSL 3.0 和 TLS 1.0。它不实现 SSL 2.0。
现在,我的理解是,仅当客户端支持 SSL 版本 2.0 时,才应发送 2.0 版客户端问候。来自 RFC 2246:
支持 SSL 版本 2.0 服务器的 TLS 1.0 客户端必须发送 SSL 版本 2.0 客户端问候消息 [SSL2] ...警告:发送 V2.0 客户端问候消息的功能将被逐步淘汰,并立即停止。
那么Java为什么要使用它呢?