Я пытаюсь отправить HttpRequest на "https://api.ecs.echa.europa.eu", используя
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.ecs.echa.europa.eu"))
.GET()
.build();
HttpClient httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
При выполнении этого кода я получаю javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Теперь я уже нашел решение этой проблемы, добавив сертификат в мое java хранилище доверенных сертификатов в $JAVA_HOME/jre/lib/security/cacerts
Что я до сих пор не понимаю, почему это необходимо:
Спецификация c веб-сайт (https://api.ecs.echa.europa.eu) использует сертификат root DigiCert Global Root CA , который уже содержится в доверенном хранилище java. Почему этого недостаточно?
Отправка запросов на другие веб-сайты, использующие этот root сертификат, работает ...
Спасибо за помощь:)