Как исправить невозможность найти действительный путь сертификации для запрашиваемой цели? - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь добавить SSL в существующий проект (пружинные загрузочные микросервисы, Java 8), я добавил конфигурацию, и она отлично работает, когда я использую сервис от пользовательского интерфейса или почтальона, но когда я использую сервис используя RestTemplate (совершать звонки между двумя сервисами на разных серверах). Он был заблокирован и выдает следующее сообщение:

2020-01-08 17:22:44,847 151337 ERROR com.xxxx.xxxx.xxxx.ProxyExecuter - error while requesting proxy I/O error on POST request for "https://xxxxxxx:8143/xxxx-xxx/exec/": sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

для конфигурации на стороне сервера. Производственная группа добавила в хранилище ключей действительную сертификацию и, как правило, ее штраф на своей стороне.

Я попытался добавить некоторую конфигурацию, например:

System.setProperty("javax.net.ssl.trustStore", keystore);
        SSLContext context = SSLContext.getInstance("TLSv1.2");
        context.init(null, null, null);

        CloseableHttpClient httpClient = HttpClientBuilder.create().setSSLContext(context)
                .build();
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
        RestTemplate restTemplate = new RestTemplate(factory);

, но не сработал, единственный метод, который мне помог, это отключение проверки хоста и, конечно, это не решение для производственного приложения

заранее благодарю за помощь.

...