Я пытаюсь вызвать API с помощью RestTemplte из службы на сервере A и другой службы на сервере B, и я получаю сообщение об ошибке ниже:
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
Проблема остается, даже когда я добавляю Конфигурация (код ниже) в шаблон REST.
SSLContext sslContext = new SSLContextBuilder()
.loadTrustMaterial(new File(keystore), trustStorePassword.toCharArray())
.build();
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);
HttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(socketFactory)
.build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
RestTemplate restTemplate = new RestTemplate(factory);
Решение, которое я нашел на net, состоит в том, чтобы экспортировать сертификат из chrome и добавить его в доверенный сертификат JVM. Я не знаю, является ли это правильным решением, потому что, например, мы можем менять этот сертификат каждые три месяца.
И у меня есть еще несколько вопросов:
Знает ли JVM все центры сертификации (я думаю, что есть миллиард ..), например, когда я звоню в Google, используя rest сертификат будет проверен JVM с использованием «security / cacerts»?
Должен ли я добавить наш сертификат в доверенные сертификаты JVM для исправления 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
?
Процесс проверки не автоматизирован c по механизму SSL?