2016-08-05 4 views
0

Wir haben eine Spring-Boot-basierte Webanwendung und verwenden das WSO2 CEP-Framework. Wie können wir die Überprüfung des Hostnamens oder die Einrichtung eines angepassten Hostnamen-Verifizierers für den AXIS2-Client ignorieren?So ignorieren Sie die Verifizierung des Hostnamens oder Setups im AXIS2-Client

Wir können dies tun, für Java HttpsURLConnection

HttpsURLConnection.setDefaultHostnameVerifier(new WildcardHostnameVerifier()); 

Oder diese Art und Weise für Apache Httpclient

// setup a WildcardHostNameVerifier for support verifying the hostname of wildcard certificate 
    sslsf = new SSLConnectionSocketFactory(sslcontext, new WildcardHostnameVerifier()); 
    CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build(); 

aber wissen nicht, wie für AXIS2 Client zu tun, haben wir einen Weg gefunden Setup Nur angepasster TrustManger.

final SSLContext sslCtx = SSLContext.getInstance("TLSv1.2"); 
sslCtx.init(null, new TrustManager[] { new CustomX509TrustManager() }, new SecureRandom()); 

stub._getServiceClient().getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, new Protocol("https", 
      (ProtocolSocketFactory) new SSLProtocolSocketFactory(sslCtx), 443)); 
+0

Wird dies helfen? http://grepcode.com/file/repo1.maven.org/maven2/org.apache.axis2/axis2-kernel/1.4/org/apache/axis2/transport/nhttp/HttpCoreNIOSSLSender.java – ycr

+0

Danke für die Antwort, ycr . Dies kann nützlich sein, wenn ich es erweitern und die Überprüfung() anpassen kann. Der von uns verwendete wso2-cep-client 1.0.10 ist jedoch eine Abhängigkeit mit axis2-kernel 1.6.4. Es scheint, dass es keinen HttpCoreNIOSSLSender mehr gibt? – Bruce

+0

Und wie könnte ich den SSLIOSessionHandler einstellen, nachdem ich es bekommen habe? Danke – Bruce

Antwort

0

können Sie TrustAllTrustManager verwenden this blog post

SSLContext sslCtx = SSLContext.getInstance("http"); 
sslCtx.init(null, new TrustManager[] {new TrustAllTrustManager()}, null); 
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, 
      new Protocol("https",(ProtocolSocketFactory)new SSLProtocolSocketFactory(sslCtx),443)); 

See.

+0

Hallo Bhathiya, danke für deine Antwort. Das habe ich in unserem Entwicklungsprojekt getan. Für die Produktion müssen wir jedoch das Serverzertifikat aus Sicherheitsgründen überprüfen. Aber manchmal kann es sein, dass der Hostname nicht übereinstimmt oder das Wildcard-Zertifikat übereinstimmen muss. – Bruce

+0

Warum können Sie keine Zertifikate mit Joker erstellen? – Bee

+0

Wir hätten wahrscheinlich das Zertifikat (two.abc.com), aber der Hostname wird nicht abgeglichen (zB connect von localhost), oder das Wildcard-Zertifikat (*. Two.abc.com), sondern eine Verbindung von one.two.abc .com und/oder two.abc.com. – Bruce

Verwandte Themen