2012-02-03 50 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");