Миграция Apache HTTP-клиента 5 с версии 5.3 на версию 5.4. Доверие ко всем хостам и замена устаревших сертификатов.Apache

Anonymous
Миграция Apache HTTP-клиента 5 с версии 5.3 на версию 5.4. Доверие ко всем хостам и замена устаревших сертификатов.

Сообщение Anonymous »

Я обновил http-клиент Apache 5.3.x до 5.4.x.
Приведенный ниже код работает нормально

Код: Выделить всё

var sslContext = SSLContexts.custom()
.loadTrustMaterial(null, TrustAllStrategy.INSTANCE)
.build();

SSLConnectionSocketFactory sslConnSocketFactory =
SSLConnectionSocketFactoryBuilder.create()
.setHostnameVerifier(NoopHostnameVerifier.INSTANCE)
.setSslContext(sslContext)
.build();

var connectionManager = PoolingHttpClientConnectionManagerBuilder.create()
.setSSLSocketFactory(sslConnSocketFactory)
.build();

CloseableHttpClient client = HttpClientBuilder.create()
.setConnectionManager(connectionManager)
.build();

HttpGet httpGet = new HttpGet("https://mms.nw.ru/");
HttpHost host = RoutingSupport.determineHost(httpGet);
ClassicHttpResponse response = client.executeOpen(host, httpGet, null);
Assertions.assertEquals(200, response.getCode());
Но класс SSLConnectionSocketFactory и метод setSSLSocketFactory PoolingHttpClientConnectionManagerBuilder устарели.
Я изменил код

Код: Выделить всё

var sslContext = SSLContexts.custom()
.loadTrustMaterial(null, TrustAllStrategy.INSTANCE)
.build();

var tlsStrategy = ClientTlsStrategyBuilder.create()
.setSslContext(sslContext)
.setHostnameVerifier(NoopHostnameVerifier.INSTANCE)
.build();

var connectionManager = PoolingHttpClientConnectionManagerBuilder.create()
.setTlsSocketStrategy((TlsSocketStrategy) tlsStrategy)
.build();

CloseableHttpClient client = HttpClientBuilder.create()
.setConnectionManager(connectionManager)
.build();

HttpGet httpGet = new HttpGet("https://mms.nw.ru/");
HttpHost host = RoutingSupport.determineHost(httpGet);
ClassicHttpResponse response = client.executeOpen(host, httpGet, null);
Assertions.assertEquals(200, response.getCode());
Он выдает исключение javax.net.ssl.SSLHandshakeException: имя, соответствующее mms.nw.ru, не найдено причина java.security.cert.CertificateException: имя, соответствующее mms.nw, не найдено. ru нашел.
Что не так?

Подробнее здесь: https://stackoverflow.com/questions/792 ... rtificates

Вернуться в «Apache»