2012-02-03 22 views
1

我在使用axis时使用Web服务时出现问题。发生这种情况的原因是轴发送了SSLv2 ClientHello,并且提供Web服务的服务器不支持SSLv2协议。为了解决这个问题,我必须禁用这个协议。为禁用它在Java中的代码是:如何在轴上禁用SSLv2套接字协议

SocketFactory socketFactory = SSLSocketFactory.getDefault(); 
SSLSocket socket = (SSLSocket) socketFactory.createSocket(hostname, port); 
socket.setEnabledProtocols(new String[] {"SSLv3", "TLSv1"}); 

我指的是这些link。现在,问题是我如何禁用此协议,当我使用轴消耗Web服务?

+0

这取决于你正在英寸 – Bill 2012-02-03 11:54:27

回答

1

如果您使用2轴,你应该能够配置一个Apache的HttpClient 3.x的SecureProtocolSocketFactory(见Axis 2 documentation on the subject)。在返回套接字之前,您应该能够在createSocket中设置启用的协议。 (您可能也有兴趣this question。)

轴1,你应该能够在axis.socketSecureFactory属性设置为自己的类名实现一个Axis SecureSocketFactory并配置有相同的方式插座。

+0

运行的容器,谢谢你的reply.I现在用轴1.我试图做SecureSocketFactory的实施,但目前尚不清楚对我在哪里我必须将告诉套接字的代码使用协议:“SSLv3”,“TLSv1”?我正在尝试如下所示: – edi843 2012-02-03 12:51:41

+0

在'create'方法中,在返回套接字之前,在返回'SSLSocket'实例之前,调用'setEnabledProtocols'。 – Bruno 2012-02-03 12:57:12

0

轴1:

  1. 创建延伸SecureScoketFatory您的自定义MySocketFactory。

    String[] protocols = { "TLSv1" };//provide the list of protocols which you  want to enable 
    ((SSLSocket) sslSocket).setEnabledProtocols(protocols); 
    
  2. 然后在您的Web服务客户端级别提供的系统属性像下面。

    System.setProperty("axis.socketSecureFactory", "com.custom.MySocketFactory");