Использование весеннего веб-клиента попало в службу https rest

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

Я импортировал оба .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 из веб-клиента.

@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. Нам нужно включить в папку ресурсов весенней загрузки любой пример или ссылку, которые будут полезны, спасибо


person henrycharles    schedule 22.04.2020    source источник
comment
Посмотрите здесь: https://www.baeldung.com/spring-boot-https-self-signed-certificate   -  person Jocelyn LECOMTE    schedule 22.04.2020


Ответы (1)



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

Шаг 1: Скопируйте необходимые сертификаты в папку resources
давайте рассмотрим пример as 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.

Спасибо

person prasad    schedule 24.04.2020
comment
спасибо за ответ, у меня есть два сертификата, мне нужно поместить эти два сертификата в папку ресурсов, или оба могут быть преобразованы в один файл pem - person henrycharles; 27.04.2020
comment
похоже, что оба сертификата предназначены для Entrust, поэтому я думаю, что можно преобразовать оба в один файл pem, но я не уверен, пожалуйста, проверьте его в разных комбинациях, если вышеприведенный подход решает вашу проблему, пожалуйста, примите его, чтобы он был полезен другим - person prasad; 27.04.2020