Java 如何在axis中禁用SSLv2套接字协议
我在使用axis使用web服务时遇到问题。这是因为axis发送了一个SSLv2 ClientHello,并且提供web服务的服务器不支持SSLv2协议。要修复此问题,我必须禁用此协议。在Java中禁用它的代码是:Java 如何在axis中禁用SSLv2套接字协议,java,sockets,ssl,axis,Java,Sockets,Ssl,Axis,我在使用axis使用web服务时遇到问题。这是因为axis发送了一个SSLv2 ClientHello,并且提供web服务的服务器不支持SSLv2协议。要修复此问题,我必须禁用此协议。在Java中禁用它的代码是: SocketFactory socketFactory = SSLSocketFactory.getDefault(); SSLSocket socket = (SSLSocket) socketFactory.createSocket(hostname, port); socket.
SocketFactory socketFactory = SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) socketFactory.createSocket(hostname, port);
socket.setEnabledProtocols(new String[] {"SSLv3", "TLSv1"});
我指的是这些。现在的问题是,当我使用axis消费Web服务时,如何禁用此协议?如果您使用axis 2,您应该能够配置Apache HttpClient 3.x(请参阅)。在返回套接字之前,您应该能够在
createSocket
中设置已启用的协议。(您可能还对以下内容感兴趣。)
对于Axis 1,您应该能够将
Axis.socketSecureFactory
属性设置为您自己的类名,并在那里以相同的方式配置套接字。如果您使用Axis 2,您应该能够配置Apache HttpClient 3.x(请参阅)。在返回套接字之前,您应该能够在createSocket
中设置已启用的协议。(您可能还对以下内容感兴趣。)
对于Axis 1,您应该能够将Axis.socketSecureFactory的属性设置为您自己的类名,并在那里以相同的方式配置套接字。对于Axis 1:
创建扩展SecureSocketFatory的自定义MySocketFactory
String[] protocols = { "TLSv1" };//provide the list of protocols which you want to enable
((SSLSocket) sslSocket).setEnabledProtocols(protocols);
然后在web服务客户端级别提供如下所示的系统属性
System.setProperty("axis.socketSecureFactory", "com.custom.MySocketFactory");
对于轴1:
创建扩展SecureSocketFatory的自定义MySocketFactory
String[] protocols = { "TLSv1" };//provide the list of protocols which you want to enable
((SSLSocket) sslSocket).setEnabledProtocols(protocols);
然后在web服务客户端级别提供如下所示的系统属性
System.setProperty("axis.socketSecureFactory", "com.custom.MySocketFactory");
这取决于您运行的容器。这取决于您运行的容器。谢谢您的回复。我使用的是axis 1。我正在尝试实现SecureSocketFactory,但我不清楚我必须将告诉套接字使用协议的代码放在哪里:“SSLv3”、“TLSv1”?我正在尝试这样的操作:在create
方法中,使用返回套接字,在返回SSLSocket
的实例之前,在其上调用setEnabledProtocols
。感谢您的回复。我使用的是axis 1。我正在尝试实现SecureSocketFactory,但我不清楚我必须将告诉套接字使用协议的代码放在哪里:“SSLv3”、“TLSv1”?我正在尝试这样的操作:在create
方法中,使用返回套接字,在返回SSLSocket
的实例之前,在其上调用setEnabledProtocols
。