2016-08-05 2 views
0

У нас есть веб-приложение на основе Spring-Boot и использующее структуру WSO2 CEP. Как мы можем игнорировать проверку имени хоста или настроить настраиваемый верификатор имени хоста для клиента AXIS2?Как игнорировать верификацию имени хоста или установочный верификатор в клиенте AXIS2

Мы можем сделать это для Java HttpsURLConnection

HttpsURLConnection.setDefaultHostnameVerifier(new WildcardHostnameVerifier()); 

Или это способ для апача 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(); 

Но не знаю, как это сделать для AXIS2 клиента, мы нашли способ установки индивидуальный довериеManger только.

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

Это поможет? http://grepcode.com/file/repo1.maven.org/maven2/org.apache.axis2/axis2-kernel/1.4/org/apache/axis2/transport/nhttp/HttpCoreNIOSSLSender.java – ycr

+0

Спасибо за ответ, ycr , Это может быть полезно, если я могу расширить его и настроить проверочный(). Тем не менее, wso2-cep-client 1.0.10, который мы использовали, является зависимостью от оси2-ядра 1.6.4. Кажется, что HttpCoreNIOSSLSender больше нет? – Bruce

+0

И как я могу сделать, чтобы установить SSLIOSessionHandler после того, как я его получил? Спасибо – Bruce

ответ

0

Вы можете использовать TrustAllTrustManager

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)); 

См this blog post.

+0

Привет, Бхатия, спасибо за ваш ответ. Я сделал это в нашем проекте развития. Однако для производства нам необходимо проверить сертификат сервера по причине безопасности. Но иногда бывает, что имя хоста не сопоставляется или нам нужно сопоставить подстановочный знак. – Bruce

+0

Почему вы не можете создавать сертификаты с wild card? – Bee

+0

У нас, вероятно, был бы сертификат (two.abc.com), но имя хоста не сопоставлено (например, подключиться от localhost) или подстановочный сертификат (*. Two.abc.com), но подключитесь к one.two.abc .com и/или two.abc.com. – Bruce

Смежные вопросы