Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在axis中禁用SSLv2套接字协议_Java_Sockets_Ssl_Axis - Fatal编程技术网

Java 如何在axis中禁用SSLv2套接字协议

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.

我在使用axis使用web服务时遇到问题。这是因为axis发送了一个SSLv2 ClientHello,并且提供web服务的服务器不支持SSLv2协议。要修复此问题,我必须禁用此协议。在Java中禁用它的代码是:

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