如何使用SSLv2发起SSL连接

我想使用SSLv2与远程服务器建立SSL连接。我正在使用Java。我试图使用以下方法在套接字中获取受支持的协议:

String[] suppProtocols=socket.getSupportedProtocols();

System.out.println("The protocols supported for this socket are:

"+Arrays.toString(suppProtocols));

我在输出中得到了这个:

[SSLv2Hello, SSLv3, TLSv1, TLSv1.1, TLSv1.2]

现在,我读到Java不支持SSLv2,而SSLv2Hello仅使用SSLv2发送问候消息。我不明白这是什么意思?是否与客户端支持SSLv2一样?如何使用SSLv2建立SSL连接。

回答:

SSLv3和TLSv1.x提供了一种将其Client Hello消息包装在SSLv2 Client Hello中的方法,如TLS规范中所述:

与SSL的向后兼容性 。SSLv3和TLS

1及更高版本具有更一致的机制来协商版本。如TLS规范所述:

所有急需的功能都将淘汰发送2.0版客户端问候消息的功能。实施者应尽一切努力尽快前进。3.0版提供了更好的机制来迁移到新版本。

Sun / Oracle JRE或OpenJDK不支持SSLv2。将SSLv3 +消息包装为SSLv2消息只是为了向后兼容。现在,默认情况下,对于Java

7中的客户端,此功能是禁用的。从服务器的角度来看,它至少可以接受其他以这种方式将其Client

Hello消息包装在SSLv2消息中的SSLv3 +客户端,无论它们是否支持SSLv2。

您可以在此问题中找到有关Java支持(包括其他实现)的更多详细信息。

一般来说,SSLv2被认为是不安全的:您根本不应该使用它。通常的趋势是从SSLv3转向TLS 1.0或更高版本,而不是向后退。

以上是 如何使用SSLv2发起SSL连接 的全部内容, 来源链接: utcz.com/qa/418796.html

回到顶部