Одной из распространенных проблем, с которыми сталкиваются разработчики на Java при работе с библиотеками для взаимодействия с внешними сервисами через HTTPS, является ошибка PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
.
Данная ошибка возникает при попытке установить защищенное соединение с сервером, но не удалось найти доверенный сертификат для данного сервера в хранилище доверенных сертификатов Java.
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
Чаще всего это происходит при использовании библиотек, которые под капотом используют java.net.HttpURLConnection
для установки HTTPS соединения.
Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Пример проблемы
Запрос к внешнему сервису через HTTPS, например, Twitter API:
URL url = new URL("https://api.twitter.com/1.1/statuses/user_timeline.json"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET");
Решение проблемы
Для решения этой проблемы необходимо добавить сертификат сервера, к которому происходит подключение, в хранилище доверенных сертификатов Java. Это можно сделать с помощью утилиты keytool, которая поставляется вместе с JDK:
keytool -importcert -trustcacerts -file [PathToYourCertificate] -alias [YourAliasForCertificate] -keystore [PathToCacerts]
где:
- [PathToYourCertificate] — путь к файлу сертификата сервера;
- [YourAliasForCertificate] — псевдоним, который будет использоваться для этого сертификата;
- [PathToCacerts] — путь к файлу хранилища доверенных сертификатов (обычно находится в папке lib/security внутри директории JRE).
После выполнения этой команды сертификат будет добавлен в хранилище, и приложение сможет успешно установить защищенное соединение с сервером.
Это основное решение проблемы, однако в некоторых случаях проблема может быть связана с другими причинами, например, с прокси-серверами или настройками firewall.
На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.
Добавить комментарий