Клиентское приложение Spring Boot Rest service - проблемы с SSL при развертывании Docker

У нас есть загрузочное веб-приложение Spring, которое использует сторонний REST API. В настоящее время сторонний API предоставляется с IP-адресом (без сопоставления доменного имени) и через https.

В нашем приложении мы отключили проверку имени хоста и несколько других настроек, используя приведенный ниже код. Тогда мы могли бы получить доступ к стороннему API без каких-либо проблем с SSL. Это конфигурация нашего остального шаблона:

@Bean
public RestTemplate restTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {

    List<ClientHttpRequestInterceptor> interceptors = new ArrayList<>();

    Map valueMap = new HashMap<>();

    valueMap.put("Authorization", "Bearer ");
    valueMap.put("Content-Type", MediaType.APPLICATION_JSON_VALUE);
    interceptors.add(new CalCustomInterceptor(valueMap));

    TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;

    SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
        .loadTrustMaterial(null, acceptingTrustStrategy)
        .build();

    SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);

    CloseableHttpClient httpClient = HttpClients.custom()
        .setSSLSocketFactory(csf).setSSLHostnameVerifier(new NoopHostnameVerifier())
        .build();

    HttpComponentsClientHttpRequestFactory requestFactory =
        new HttpComponentsClientHttpRequestFactory();

    requestFactory.setHttpClient(httpClient);

    RestTemplate restTemplate = new RestTemplate(requestFactory);
    restTemplate.setInterceptors(interceptors);

    return restTemplate;
}

Когда мы запускаем службу (как банку) на нашем сервере разработки, это работает нормально. Однако это не работает, когда приложение работает внутри контейнера докеров. Есть идеи, почему это так?

ОБНОВЛЕНИЕ: ошибка при работе внутри контейнера докеров:

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Какую ошибку выдает при запуске внутри докера?

Rezwan 10.09.2018 09:47

Обновлен вопрос с подробностями об исключении. Спасибо.

J4Priyan 10.09.2018 10:19

@ J4Priyan нашел ответы?

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

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