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

使用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"}); 

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

如果您使用的是Axis 2,则应该能够配置Apache HttpClient 3.x SecureProtocolSocketFactory (请参阅有关该主题的Axis 2文档 )。 您应该能够在返回套接字之前在createSocket设置启用的协议。 (你可能也对这个问题感兴趣。)

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

对于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");