相关疑难解决方法(0)

为什么Java的SSLSocket发送版本2客户端问候?

SSLSocket.getEnabledProtocols()方法返回以下内容: [SSLv2Hello, SSLv3, TLSv1].事实上,当我打电话connect()并打开SSL调试时,我看到使用了一个v2客户端问候:

main, WRITE: TLSv1 Handshake, length = 81
main, WRITE: SSLv2 client hello message, length = 110
Run Code Online (Sandbox Code Playgroud)

但我已经发现了两个(诚然旧)基准说JSSE并不能支持SSL版本2:

来自Java的基础网络:

'SSLv2Hello'是一种伪协议,它允许Java使用SSLv2'hello消息'发起握手.这并不会导致使用的SSLv2协议,这是不是Java的所有支持.

并从JSSE参考指南:

J2SDK 1.4及更高版本中的JSSE实现实现了SSL 3.0和TLS 1.0.它没有实现SSL 2.0.

现在,我的理解是,当客户端2.0版客户端问候应只发送支持SSL 2.0版.来自RFC 2246:

支持SSL 2.0版服务器的TLS 1.0客户端必须发送SSL 2.0版客户端问候消息[SSL2] ... 警告:发送2.0版客户端问候语消息的能力将逐步淘汰.

那么为什么Java使用它呢?

java ssl jsse

23
推荐指数
1
解决办法
3万
查看次数

标签 统计

java ×1

jsse ×1

ssl ×1