Skip to content
EN

"Trust anchor for certification path not found"

Коротко:

Android бросает эту ошибку (java.security.cert.CertPathValidatorException), когда сертификат сервера подписан CA, которого нет в Android system truststore. 3 причины: (1) self-signed или private CA, (2) неполная chain — сервер не шлёт intermediate, (3) устаревший Android < 7 не знает новые CAs (Let's Encrypt R3 с 2021). Фикс: install full chain на сервере или добавить CA в network_security_config.xml.

Ниже: подробности, пример, связанные, FAQ.

Проверить SSL своего сайта →

Детали

  • Проверка chain: openssl s_client -connect host:443 -showcerts — должно быть 2+ certs
  • Android 7+ поддерживает Let's Encrypt. Android < 7 — нужен ISRG Root X1 cross-signed
  • network_security_config.xml — per-app trust config (API 24+)
  • Не работает с Google Play — certificate pinning у apps
  • Альтернатива: apps using OkHttp с кастомным TrustManager

Пример

<!-- res/xml/network_security_config.xml -->
<network-security-config>
  <base-config>
    <trust-anchors>
      <certificates src="system"/>
      <certificates src="@raw/my_ca"/>  <!-- res/raw/my_ca.pem -->
    </trust-anchors>
  </base-config>
</network-security-config>

<!-- AndroidManifest.xml -->
<application android:networkSecurityConfig="@xml/network_security_config" ...>

Связанные

Что такое ошибка "Trust anchor for certification path not found"?

Ошибка "Trust anchor for certification path not found" возникает на устройствах Android, когда система не может найти надежный корневой сертификат для проверки подлинности SSL-сертификата веб-сайта. Это может произойти из-за отсутствия корневого сертификата в хранилище доверенных корневых сертификатов Android, неправильной конфигурации сервера или устаревшего сертификата. Чтобы устранить эту проблему, убедитесь, что используемые сертификаты корректны и обновлены.

Причины возникновения ошибки и способы устранения

Ошибка может возникать по нескольким причинам:

  • Отсутствие корневого сертификата: Если корневой сертификат, подписавший ваш SSL-сертификат, отсутствует в хранилище доверенных сертификатов Android, устройство не сможет проверить цепочку сертификатов.
  • Неправильная настройка сервера: Сервер может быть неправильно настроен, не предоставляя полный цепочку сертификатов, что также приведет к ошибке.
  • Устаревший сертификат: Если SSL-сертификат устарел или был отозван, это может вызвать проблемы с его проверкой.

Для устранения проблемы выполните следующие шаги:

  1. Проверьте цепочку сертификатов: Используйте команды, такие как openssl s_client -connect example.com:443 -showcerts, чтобы получить информацию о сертификатах, выданных сервером.
  2. Обновите корневые сертификаты: Убедитесь, что ваше устройство Android обновлено, и установлены все последние обновления безопасности.
  3. Настройте сервер: Убедитесь, что сервер правильно настроен и предоставляет полный цепочку сертификатов. Это может включать в себя промежуточные сертификаты, которые необходимо установить на сервере.

Практический пример: исправление ошибки на веб-сервере

Предположим, вы управляете веб-сервером на основе Apache и получаете ошибку "Trust anchor for certification path not found" при попытке доступа к вашему сайту с Android-устройства. Для устранения этой проблемы выполните следующие шаги:

1. Проверьте сертификаты

В первую очередь проверьте, какие сертификаты предоставляет ваш сервер. Используйте команду:

openssl s_client -connect yourdomain.com:443 -showcerts

Эта команда покажет цепочку сертификатов, выданных сервером. Убедитесь, что корневой сертификат присутствует в списке.

2. Установите промежуточные сертификаты

Если промежуточные сертификаты отсутствуют, вам нужно их установить. Скачайте необходимые промежуточные сертификаты от вашего поставщика SSL и добавьте их в конфигурацию Apache. Например:

SSLCertificateFile /etc/ssl/certs/your_domain.crt
SSLCertificateKeyFile /etc/ssl/private/your_domain.key
SSLCertificateChainFile /etc/ssl/certs/intermediate.crt

Не забудьте перезапустить Apache после внесения изменений:

sudo systemctl restart apache2

3. Проверьте настройки DNS

Также убедитесь, что DNS-записи вашего домена правильно настроены и указывают на правильный IP-адрес сервера. Используйте команду:

nslookup yourdomain.com

После выполнения всех этих шагов ошибка "Trust anchor for certification path not found" должна быть устранена, и ваш сайт будет доступен с Android-устройств без проблем.

СертификатСрок, издатель, домены (SAN)
ЦепочкаПроверка промежуточных и корневых CA
TLS-протоколВерсия TLS и набор шифров
УязвимостиHeartbleed, POODLE, слабые шифры

Почему нам доверяют

TLS 1.3
поддержка
Полная
цепочка CA
<2с
результат
30/14/7
дней до истечения

Как это работает

1

Введите домен

2

Проверка цепочки TLS

3

Дата истечения и уязвимости

Что проверяет SSL-тест?

SSL/TLS — протокол шифрования, который защищает данные между браузером и сервером. Наш инструмент анализирует сертификат, цепочку доверия, версию TLS и известныеуязвимости.

Детали сертификата

Издатель, срок действия, алгоритм подписи, покрываемые домены (SAN) и тип валидации (DV/OV/EV).

Цепочка доверия

Проверка полной цепочки: от конечного сертификата через промежуточные до корневого CA.

Анализ TLS

Версия протокола (TLS 1.2/1.3), набор шифров, поддержка Perfect Forward Secrecy (PFS).

Оповещения об истечении

Создайте монитор — получайте уведомления в Telegram и email за 30/14/7 дней до истечения.

DV vs OV vs EV сертификаты

DV (Domain Validation)
  • Подтверждение только владения доменом
  • Выдаётся за минуты автоматически
  • Бесплатно через Let's Encrypt
  • Подходит для большинства сайтов
  • Самый распространённый тип
OV / EV
  • Проверка организации (OV) или расширенная проверка (EV)
  • Выдаётся за 1-5 рабочих дней
  • Стоимость от $50 до $500/год
  • Для финансов, e-commerce, госсайтов
  • Повышает доверие пользователей

Кому это нужно

DevOps

мониторинг SSL-сертификатов

Безопасность

аудит TLS-конфигурации

SEO

HTTPS как фактор ранжирования

E-commerce

доверие покупателей

Частые ошибки

Истёкший сертификатБраузеры блокируют сайт с истёкшим SSL. Настройте автопродление или мониторинг.
Неполная цепочка сертификатовБез промежуточного CA некоторые браузеры и боты не смогут верифицировать сертификат.
Mixed content на HTTPS-сайтеHTTP-ресурсы на HTTPS-странице — замок в браузере пропадает, снижается доверие.
Использование TLS 1.0/1.1Устаревшие версии TLS содержат известные уязвимости. Используйте TLS 1.2+ или 1.3.
Несовпадение домена в сертификатеСертификат должен покрывать все домены сайта, включая www и поддомены.

Лучшие практики

Настройте автопродлениеLet's Encrypt + certbot с cron — сертификат обновляется автоматически каждые 60-90 дней.
Включите HSTSЗаголовок Strict-Transport-Security заставляет браузер всегда использовать HTTPS.
Используйте TLS 1.3TLS 1.3 быстрее (1-RTT handshake) и безопаснее — убраны устаревшие шифры.
Мониторьте срок действияСоздайте монитор на Enterno.io — получайте уведомления задолго до истечения.
Проверяйте цепочку после обновленияПосле обновления сертификата убедитесь, что промежуточные сертификаты установлены.

Получите больше с бесплатным аккаунтом

Мониторинг SSL-сертификатов, история проверок и уведомления за 30 дней до истечения.

Зарегистрироваться (FREE)

Больше по теме

Источники

Часто задаваемые вопросы

Как проверить chain быстро?

curl -v https://host 2>&1 | grep -i \"issuer\|depth\|ssl\". Либо enterno.io/ssl — видно intermediate + leaf.

LE на Android < 7?

ISRG Root X1 cross-signed через DST Root CA X3. Expired 30 Sep 2021, LE возобновил cross-sign — работает до 2025+.

App-level vs system-level?

network_security_config — per-app (API 24+). Для tablet-wide — need rooted device + push CA в /system/etc/security/cacerts/.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.