Spring boot Rest - потребительское приложение службы - проблемы с SSL при развертывании Docker - PullRequest
0 голосов
/ 10 сентября 2018

У нас есть загрузочное веб-приложение 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;
}

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

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

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
...