Клиентское приложение 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
1
3
243
0

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