С помощью весеннего веб-клиента попал в сервис https rest - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть два .cer файла от клиента, теперь моя цель состоит в том, чтобы поразить клиентский API, используя https, а не http, используя весенний веб-клиент. Поскольку я новичок в Spring, веб-клиент не понимает, что делать

Я импортировал оба .cer в хранилище ключей, используя следующую команду

keytool -import -file "C:\Users\ankur\Download\Entrust_Root_Certification_Authority-G2.cer" -keystore "C:\Program Files\Java\jre1.8.0_40\lib\security\cacerts" -storepass "changeit"

keytool -import -file "C:\Users\ankur\Download\certificate\Entrust_Certification_Authority-L1K.cer" -keystore "C:\Program Files\Java\jre1.8.0_40\lib\security\cacerts" -storepass "changeit

Я написал ниже в коде, чтобы поразить API программно из webclient

@Bean

       public WebClient createWebClient() throws SSLException {

             SslContext sslContext = SslContextBuilder

                           .forClient()

                           .trustManager(InsecureTrustManagerFactory.INSTANCE)

                           .build();          

             HttpClient httpClient = HttpClient

                           .create()

                           .secure(sslContextSpec -> sslContextSpec.sslContext(sslContext));

                    ClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);

             return WebClient.builder()

                           .clientConnector(connector).build();

       }



application.yml
    rest:
      endpoint:https://someexample.com/xyz

Я понятия не имею, что делать с файлом .cer, где хранить этот файл .cer. Нужно ли включать в папку ресурсов Spring Boot любой пример или ссылку, было бы полезно, спасибо

1 Ответ

0 голосов
/ 24 апреля 2020


ниже - один из подходов, при котором вы можете настроить ssl-сертификаты на webclient

Шаг 1: Скопируйте необходимые сертификаты в папку resources
давайте рассмотрим пример как config/Entrust_Root_Certification_Authority-G2.cer

Шаг 2: Создайте свойство для настройки расположения ваших сертификатов, как показано ниже, в одном из ваших классов конфигурации

  @Value("${entrust.ssl.cert.path:config/Entrust_Root_Certification_Authority-G2.cer}")
  private String entrustSslCertFilePath;

Шаг 3: Загрузите эти сертификаты при создании SslContext

SslContext sslContext = SslContextBuilder.forClient()
            .trustManager(new ClassPathResource(entrustSslCertFilePath).getInputStream())
            .build();

Примечание. Выше я использовал файл pem, который работал правильно, попробуйте и при необходимости не стесняйтесь конвертировать cer в pem файл и sslshopper будет очень полезен для проверки и конвертации сертификатов ssl

Спасибо

...