Что эквивалентно .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) в мире Netty?

Небольшой вопрос относительно Нетти и io.netty.handler.ssl.SslContext

В Tomcat и org.apache.http.ssl.SSLContexts у нас есть возможность выполнить следующее:

HttpClient httpClient = HttpClients.custom() .setSSLContext(SSLContexts.custom() .loadKeyMaterial(someKeystorePropertlyInitialized) .loadTrustMaterial(someTruststorePropertlyInitialized) .build()) .setSSLHostnameVerifier (NoopHostnameVerifier.INSTANCE) .build();

(Спасибо, если мы сможем оставить шрифты и не обернуть их внутри блока кода)

Это может, например, исправить такие проблемы, как Вызвано: java.security.cert.CertificateException: не найдено альтернативное DNS-имя субъекта, соответствующее xxx (этот вопрос не о том, является ли NoopHostnameVerifier.INSTANCE правильным способом исправить это.)

Мой вопрос в том, что эквивалентно в Netty .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE), без .trustManager(InsecureTrustManagerFactory.INSTANCE), потому что у меня есть настоящий трастовый магазин, я просто хочу пропустить имя хоста, а не все

Может что-то с reactor.netty.http.client.HttpClient; HttpClient.create() ?


person PatPatPat    schedule 04.10.2020    source источник


Ответы (1)


На самом деле, Netty по умолчанию отключила проверку имени хоста — см. эту проблему. Похоже, библиотека, которую вы используете (reactor-netty), может быть включена. По-видимому, существует похожая проблема на github Reactor-Netty, которая указывает на решение, но предоставленный фрагмент кода делает больше, чем необходимо. По сути, все, что вам нужно, это получить доступ к SSLEngine из SslHandler и убедиться, что алгоритм идентификации конечной точки пуст/нулевой:

HttpClient.create().secure(
        ssl -> ssl.sslContext(sslContext)
              .handlerConfigurator(handler-> {
                  SSLEngine engine = handler.engine();
                  SSLParameters params = new SSLParameters();
                  // ... set other SSL params
                  params.setEndpointIdentificationAlgorithm(null);
              })
);
person spinlok    schedule 20.10.2020