gpt4 book ai didi

java - 具有特定协议(protocol)版本的 SSL 连接

转载 作者:搜寻专家 更新时间:2023-11-01 02:26:35 25 4
gpt4 key购买 nike

我正在尝试使用特定协议(protocol)版本执行 SSL 连接,使用以下 JAVA 代码:

    System.out.println("Locating socket factory for SSL...");
SSLSocketFactory sslsocketfactory = (SSLSocketFactory)SSLSocketFactory.getDefault();
System.out.println("Creating secure socket to " + https_url + ":443");
SSLSocket sslSocket = (SSLSocket)sslsocketfactory.createSocket();
String []protocol = {"SSLv2Hello"};
sslSocket.setEnabledProtocols(protocol);
SocketAddress addr = new InetSocketAddress(https_url,443);
sslSocket.connect(addr);
String [] P = sslSocket.getEnabledProtocols();
System.out.println("Enabled Protocol: " + Arrays.toString(P));

运行代码时,出现以下异常:

线程“主”java.lang.IllegalArgumentException 中的异常:无法启用 SSLv2Hello,除非还启用了至少一个其他受支持的版本。
在 sun.security.ssl.ProtocolList。(未知来源)
在 sun.security.ssl.ProtocolList。(未知来源)
在 sun.security.ssl.SSLSocketImpl.setEnabledProtocols(未知来源)
在 CheckByURL.test(CheckByURL.java:36)
在 CheckByURL.main(CheckByURL.java:15)

当我尝试使用其他 SSL 版本时,它运行良好。

有人知道如何解决这个问题吗?

最佳答案

Oracle Java 不支持 SSLv2。对于需要它的某些古老网站,它仅支持 SSLv2Hello 消息以及更高级别的协议(protocol)。因此,您收到了错误消息。 SSLv2Hello 是一个伪协议(protocol),它只是告诉 Java 以 SSLv2Hello 消息而不是 SSLv3 或 TLS Hello 消息开始。

我相信 IBM 的 JRE 支持 SSLv2。

但是几乎可以肯定,您尝试连接的服务器也支持 SSLv3、TLS 等(如果不支持,则应升级,或因不安全而下线)。因此,只需保留已启用的密码套件,您就应该能够连接到 Oracle JRE。

关于java - 具有特定协议(protocol)版本的 SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21308369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com