如何在轴上禁用SSLv2套接字协议

时间:2012-02-03 11:34:15

标签: java sockets ssl axis

我使用axis使用Web服务时出现问题。这是因为axis发送了SSLv2 ClientHello,而提供webservice的服务器不支持SSLv2协议。为了解决这个问题,我必须禁用此协议。在Java中禁用它的代码是:

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

我指的是这些link。现在,问题是当我使用axis来使用web服务时如何禁用此协议?

2 个答案:

答案 0 :(得分:1)

如果您使用的是Axis 2,则应该能够配置Apache HttpClient 3.x SecureProtocolSocketFactory(请参阅Axis 2 documentation on the subject)。您应该能够在返回套接字之前在createSocket中设置启用的协议。 (您可能也对this question感兴趣。)

对于Axis 1,您应该能够将axis.socketSecureFactory属性设置为实现Axis SecureSocketFactory的自己的类名,并以相同的方式配置套接字。

答案 1 :(得分:0)

对于Axis 1:

  1. 创建自定义MySocketFactory,扩展SecureScoketFatory。

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

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