Не удалось получить путь к PKIX: sun.security.provider.certpath.SunCertPathBuilderException после обновления jdk - PullRequest
1 голос
/ 05 марта 2020

После обновления java версии с 1.8.0_231 до 1.8.0_241 я получаю ошибки, связанные с настройкой сертификата.

Во время весенней загрузки я настраиваю хранилище ключей и хранилище ключей, а также выполняю вызов rest с помощью RestTemplate, предоставляемого Spring Framework.

После вызова службы отдыха я получаю sun.security.validator. ValidatorException: не удалось построить путь PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенной цели; вложенное исключение - javax. net .ssl.SSLHandshakeException: sun.security.validator.ValidatorException: ошибка пути PKIX.

Тот же код работал нормально с JDK 1.8.0_231. Может ли мне помочь в создании проблемы.

Я настроил хранилище ключей и keystorepassowrd, как показано ниже

        System.setProperty("javax.net.ssl.keyStore", environment.getProperty("javax.net.ssl.keyStore"));
        String pswd = null;
        try (BufferedReader br = new BufferedReader(
                new InputStreamReader(new 
        FileInputStream(environment.getProperty("javax.net.ssl.keyStorePassword")), Charset.defaultCharset()))) {
            pswd = br.readLine();
            if (pswd != null) {
                System.setProperty("javax.net.ssl.keyStorePassword", pswd);
            }

        }

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Ошибка построения пути PKIX * ​​1002 *

Это означает, что существует проблема с доверительными сертификатами. Так что проблема в вашем магазине доверия. Когда проблема началась после обновления JDK, вы, вероятно, использовали стандартное хранилище доверенных сертификатов java, называемое «cacerts». Вы можете найти это в JDK_HOME / jre / lib / security / cacerts.

Скопируйте этот файл из старого в новый JDK и проверьте, решена ли проблема. Лучшее решение - просто скопировать нужные сертификаты из старых каскадов в новый, а не перезаписывать их. Это связано с тем, что новый файл cacerts будет содержать новые сертификаты от доверенных root сторон, которых не будет в старой.

Я предлагаю использовать приложение с пользовательским интерфейсом, что-то вроде https://keystore-explorer.org/ , чтобы сделать это. Это позволяет вам перетаскивать или копировать вставить сертификаты.

0 голосов
/ 05 марта 2020

Сначала проверьте файл cacert в каталоге JDK 1.8.0_231/jre/lib/security и тот же в каталоге jre с тем же местоположением. Сначала попробуйте скопировать файлы безопасности и вставить в другую версию java с указанным выше расположением. Это должно решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...