Пропустить проверку сертификата SSL в шаблоне Spring Rest — Spring Boot 3.x.x

Как я могу пропустить проверку сертификата SSL в шаблоне Spring Rest с помощью Spring Boot 3? Я нахожу множество решений в Интернете и на Stack Overflow, которые совместимы с Spring Boot 2.xx, но не работают с Spring Boot 3.xx.

TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
 
SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
        .loadTrustMaterial(null, acceptingTrustStrategy)
        .build();
 
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);
 
CloseableHttpClient httpClient = HttpClients.custom()
        .setSSLSocketFactory(csf)
        .build();
 
HttpComponentsClientHttpRequestFactory requestFactory =
        new HttpComponentsClientHttpRequestFactory();
 
requestFactory.setHttpClient(httpClient);
 
RestTemplate restTemplate = new RestTemplate(requestFactory);

Этот код дает ошибку компиляции в Spring Boot 3.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
179
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать что-то вроде этого, чтобы создать HTTP-клиент:

import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactoryBuilder;
import org.apache.hc.client5.http.ssl.TrustAllStrategy;
import org.apache.hc.core5.ssl.SSLContexts;

[...]

private CloseableHttpClient getHttpClient()
      throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
    return HttpClients.custom()
        .setConnectionManager(
            PoolingHttpClientConnectionManagerBuilder.create()
                .setSSLSocketFactory(
                    SSLConnectionSocketFactoryBuilder.create()
                        .setSslContext(
                            SSLContexts.custom()
                                .loadTrustMaterial(null, TrustAllStrategy.INSTANCE)
                                .build())
                        .setHostnameVerifier((s, sslSession) -> true)
                        .build())
                .build())
        .build();
  }

[...]

Очевидно, вы не должны использовать это в продакшене, так как это совершенно небезопасно.

Другие вопросы по теме