2015-06-04 32 views
8

Wenn ich Webservice Client-Stubs mit Apache Axis erzeugen, deaktiviere ich die Server-Zertifikat Vertrauensprüfung in meinem Code, um den Client-Stubs mit durch die folgende Methode aufrufEquivalent von org.apache.axis.components.net.SunFakeTrustSocketFactory für wsimport

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

Wie deaktiviere ich die Trust-Prüfung mit Client-Stubs, die durch Ausführen von wsimport generiert wurden?

Ich benutze dies, wenn ich etwas Testcode laufen lasse.

Antwort

6

Alles, was in dieser Klasse passiert ist die Bereitstellung eines falschen trust store manager, dass trusts anything. Wenn Sie das wissen, können Sie this article verwenden und etwas zusammensetzen.

  1. Zuerst wird die 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. füttern Dann wird Ihr Trust-Manager auf eine Instanz SSLContext, wie axis was doing:

    SSLContext sCtxt = SSLContext.getInstance("SSL"); 
    sCtxt.init(null, new TrustManager[]{new EasyTrustManager()}, new java.security.SecureRandom()); 
    
  3. Richten Sie den benutzerdefinierten Kontext von HttpsURLConnection#setDefaultSSLSocketFactory Aufruf basiert auf der Tatsache, dass alle Ihre Web-Service-Aufrufe auf einer zugrunde liegenden Instanz von 012 basieren. Dieser Aufruf wird das Setup der Kontext, haft SSLContext#getContext, für alle https ruft

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

Hatte Ihre EasyTrustManager zu bearbeiten, um es zu kompilieren zu machen. – user93353