Java SSLException "PKIX path building failed: unable to find valid certification path to requested target" — Java не может построить цепочку доверия. JVM truststore ($JAVA_HOME/lib/security/cacerts) не содержит CA или intermediate сервера. Фиксы: (1) keytool -import в cacerts, (2) -Djavax.net.ssl.trustStore для alternate truststore, (3) -Djavax.net.debug=ssl,handshake для диагностики.
Ниже: подробности, пример, связанные, FAQ.
Бесплатный онлайн-инструмент — SSL-чекер: результат мгновенно, без регистрации.
# Скачать CA cert с сервера
$ echo | openssl s_client -connect server:443 -showcerts 2>/dev/null | \
openssl x509 -out server-ca.crt
# Import в Java cacerts
$ sudo /bin/keytool -import \
-alias server-ca \
-keystore /lib/security/cacerts \
-storepass changeit \
-file server-ca.crt
# Debug app
$ java -Djavax.net.debug=ssl:handshake MyAppОшибка sun.security.validator.ValidatorException: PKIX path building failed возникает, когда Java-приложение не может построить цепочку сертификатов для проверки SSL-соединения. Это обычно происходит из-за отсутствия доверенных сертификатов в хранилище Java или неправильной конфигурации SSL-сертификатов на сервере. Убедитесь, что все промежуточные сертификаты установлены правильно и что ваше Java-приложение может получить к ним доступ.
Ошибка PKIX path building failed может возникать по нескольким причинам:
cacerts, который находится в папке lib/security вашего JRE.Для устранения ошибки выполните следующие действия:
openssl s_client -connect yourdomain.com:443 -showcerts. Это поможет вам увидеть, какие сертификаты возвращаются сервером.keytool -import -alias your_alias -file your_cert.crt -keystore $JAVA_HOME/lib/security/cacerts. Убедитесь, что вы используете правильный пароль для доступа к хранилищу (по умолчанию это changeit).Рассмотрим практический пример, когда вы пытаетесь подключиться к вашему серверу через Java-приложение и получаете ошибку PKIX path building failed. Предположим, что вы используете сервер example.com, и хотите проверить его сертификаты.
Для начала выполните команду openssl:
openssl s_client -connect example.com:443 -showcertsВы получите вывод, содержащий цепочку сертификатов. Обратите внимание на корневой сертификат и промежуточные сертификаты. Если какой-либо из них отсутствует, вам необходимо его получить.
Допустим, вы обнаружили, что промежуточный сертификат не установлен. Вам нужно будет его скачать и импортировать в ваше Java-хранилище сертификатов:
intermediate.crt.keytool -import -alias intermediate_cert -file intermediate.crt -keystore $JAVA_HOME/lib/security/cacertsПосле выполнения этих шагов, перезапустите ваше Java-приложение. Если все было сделано правильно, ошибка sun.security.validator.ValidatorException: PKIX path building failed должна исчезнуть, и вы сможете установить SSL-соединение без проблем.
SSL/TLS — протокол шифрования, который защищает данные между браузером и сервером. Наш инструмент анализирует сертификат, цепочку доверия, версию TLS и известныеуязвимости.
Издатель, срок действия, алгоритм подписи, покрываемые домены (SAN) и тип валидации (DV/OV/EV).
Проверка полной цепочки: от конечного сертификата через промежуточные до корневого CA.
Версия протокола (TLS 1.2/1.3), набор шифров, поддержка Perfect Forward Secrecy (PFS).
Создайте монитор — получайте уведомления в Telegram и email за 30/14/7 дней до истечения.
мониторинг SSL-сертификатов
аудит TLS-конфигурации
HTTPS как фактор ранжирования
доверие покупателей
www и поддомены.Strict-Transport-Security заставляет браузер всегда использовать HTTPS.Мониторинг SSL-сертификатов, история проверок и уведомления за 30 дней до истечения.
Зарегистрироваться (FREE)Скопировать в app-specific jks + -Djavax.net.ssl.trustStore. Обновление JDK не сбросит.
Для dev: TrustManager который принимает всё. НЕ включать в prod код.
-Djavax.net.ssl.trustStore в MAVEN_OPTS / GRADLE_OPTS, или <jvmArgs> в build файлах.
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.