当前位置: 首页 > 面试题库 >

如何使用SSLv2发起SSL连接

汪信鸥
2023-03-14
问题内容

我想使用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或更高版本,而不是向后退。



 类似资料:
  • 我正在尝试连接到LDAP以对用户进行身份验证。下面是我的代码,但是我不能使用我的C#代码设置SSL。 我从我的应用程序安全小组收到一条消息,我正在发送普通密码,所以我试图通过将身份验证类型设置为安全来保护它,通过尝试将选项设置为 但是我在连接对象中没有看到任何Sessionoption,我正在使用novel.LDAP dll进行LDAP操作。 有谁能帮帮我吗?如何在网络上以安全的方式发送密码供ld

  • 我一直试图连接到我的Cassandra节点使用SSL选项,但我似乎无法让它工作。我有所有的密钥存储/信任存储设置正确。节点到节点加密工作,客户端到节点加密工作通过OpsCenter和。我的问题,我如何得到正确的证书/密钥/ca文件的cassandra-驱动程序在节点上?我尝试过根据我找到的提要导出,但是没有好的教程。 通过阅读其他Java连接教程,我可以只包含我的密钥库,在Ruby连接器上,它说它

  • 我有一个远程Mysql服务器运行SSL证书安全。我可以使用自制的密钥库和信任库使独立的Java JDBC连接正常工作。jks。问题是,我找不到任何文档或网站,教我如何将使用SSL证书保护的mysql数据库插入springboot。我的申请。属性文件包含以下内容: 在Eclipse中,我在JVM参数字段下看到: 这行不通。给了我这个错误:

  • 更新:不幸的是,我没能用自定义TrustStore做到这一点。我用installCert.java安装了证书。

  • 问题内容: 我正在构建一个充当XMPP客户端的小程序,并且正在使用Smack库。现在,我要连接的服务器需要SSL(在Pidgin中,我必须检查“强制旧(端口5223)SSL”)。我无法让Smack连接到该服务器。可能吗? 问题答案: 看一下这个线程。 http://www.igniterealtime.org/community/thread/37678 本质上,您需要在代码中添加以下两行: 其中

  • 我使用Apache Camel 2.17.1,在Jetty组件(http://Camel.Apache.org/Jetty.html)上设置SSL客户端身份验证时遇到了一些问题。使用服务器SSL的第一部分运行平稳(设置服务器密钥存储并从浏览器访问HTTPSendpoint)。现在,我试图通过添加另一个路由(具有不同的http端口)来丰富应用程序,其中需要客户端证书。 从文档中,这可以通过以下方法实