2015-06-04 9 views
8

Quando ho generare stub client webservice utilizzando Apache Axis, ho disattivare il controllo di fiducia certificato del server nel mio codice utilizzando gli stub client chiamando il seguente metodoequivalente di org.apache.axis.components.net.SunFakeTrustSocketFactory per wsimport

AxisProperties.setProperty("axis.socketSecureFactory", 
    "org.apache.axis.components.net.SunFakeTrustSocketFactory"); 

Come disabilitare il controllo di affidabilità con gli stub client generati eseguendo wsimport?

Lo uso quando eseguo un codice di prova.

risposta

6

Tutto ciò che sta accadendo in quella classe è la fornitura di un falso trust store manager, quello trusts anything. Sapendo questo, puoi usare this article e mettere insieme qualcosa.

  1. In primo luogo il easy trust manager

    public class EasyTrustManager implements X509TrustManager { 
        public void checkClientTrusted(X509Certificate[] chain, String authType) { 
         //do nothing 
        } 
    
        public void checkServerTrusted(X509Certificate[] chain, String authType) { 
         //do nothing 
        } 
    
        public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
         return null; 
        } 
    } 
    
  2. Poi alimentare il vostro gestore di fiducia a un'istanza di SSLContext, proprio come axis was doing:

    SSLContext sCtxt = SSLContext.getInstance("SSL"); 
    sCtxt.init(null, new TrustManager[]{new EasyTrustManager()}, new java.security.SecureRandom()); 
    
  3. Setup contesto personalizzato, chiamando HttpsURLConnection#setDefaultSSLSocketFactory base sul fatto che tutte le chiamate al servizio web sono basate su un'istanza sottostante di HttpsURLConnection. Questa chiamata di impostazione sarà il contesto, a titolo di SSLContext#getContext, per tutto https chiamate

    HttpsURLConnection.setDefaultSSLSocketFactory(sCtxt.getSocketFactory()); 
    
+0

dovuto modificare il tuo EasyTrustManager per renderlo compilazione. – user93353