如何在轴上禁用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:
-
创建自定义MySocketFactory,扩展SecureScoketFatory。
String[] protocols = { "TLSv1" };//provide the list of protocols which you want to enable ((SSLSocket) sslSocket).setEnabledProtocols(protocols);
-
然后在您的Web服务客户端级别提供如下所示的System属性。
System.setProperty("axis.socketSecureFactory", "com.custom.MySocketFactory");