【发布时间】:2014-01-23 12:37:47
【问题描述】:
我正在尝试使用以下 JAVA 代码执行特定协议版本的 SSL 连接:
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));
运行代码时,出现以下异常:
Exception in thread "main" java.lang.IllegalArgumentException: SSLv2Hello cannot be enabled unless at least one other supported version is also enabled.
at sun.security.ssl.ProtocolList.(Unknown Source)
at sun.security.ssl.ProtocolList.(Unknown Source)
at sun.security.ssl.SSLSocketImpl.setEnabledProtocols(Unknown Source)
at CheckByURL.test(CheckByURL.java:36)
at CheckByURL.main(CheckByURL.java:15)
当我尝试使用其他 SSL 版本时,它运行良好。
有人知道如何解决这个问题吗?
【问题讨论】: