Ошибки SSL подключений на сетевом участке устройство -> Indeed Key Server
Автор Nikita Kim, Last modified by Kirill Osipov на 02 сентября 2025 03:35 PM

Вопрос:

После замены сертификата на опубликованном сервере Indeed Key часть устройств перестала получать пуш, а также им невозможно зарегистрировать новый аутентификатор Indeed Key. Из-за чего воспроизводится данное поведение?

Ошибка:

В логах firebase для проблемных устройств видим данную ошибку:

| [ 2] ERROR | CoroutinesRetrofitRepository$registerUserOnServer$1::invokeSuspend::15 | java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Она интерпретируется так: устройству не удаётся установить доверительные отношения с сервером Indeed Key.

Причины возникновения ошибки:

  1. Сертификат для Indeed Key сервера выпущен не доверенным УЦ (либо это самоподписанный сертификат, либо выпущен УЦ, которому девайс не доверяет).
  2. Неподдерживаемый протокол.
  3. Сертификат просрочен.
  4. Не сконфигурирована цепочка сертификатов.

 Возможные решения ошибки:

  1. Выпустить сертификат, которому будет доверять девайс/приложение.
  2. Выпустить сертификат с нашего УЦ.
  3. Разрешить использование TLS 1.2 и (опционально) TLS 1.3 на сервере Indeed Key, т.к. Android-приложение может работать только с ними. Кроме того, проверить, какие наборы шифров и в каком порядке включены на сервере (чем выше - тем приоритетнее и безопаснее):

    // TLSv1.3.
    CipherSuite.TLS_AES_128_GCM_SHA256,
    CipherSuite.TLS_AES_256_GCM_SHA384,
    CipherSuite.TLS_CHACHA20_POLY1305_SHA256,

    // TLSv1.0, TLSv1.1, TLSv1.2.
    CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
    CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
    CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
    CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
    CipherSuite.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
    CipherSuite.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,

    // не рекомендуется использовать!
    CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
    CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
    CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256,
    CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384,
    CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA,
    CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA,
    CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA

  4. Перевыпустить сертификат.
  5. Настроить цепочку сертификатов.

Чтобы точечно выявить причину ошибку, рекомендуем:

  1. Собрать серверные логи для core и Indeed Key. Например, в случае, когда сертификат был просрочен, ошибка, свидетельствующая о невозможности установить доверительные отношения также возникнет между серверами AM и Indeed Key, будет зафиксирована в логах core.
  2. Проверить сертификат открыв ссылку в браузере. Если сертификат не является доверенным или просрочен, в браузере будет отображаться следующая ошибка:



    Также, стоит иметь в виду, что браузеры на базе Chromium и Firefox проверяют действительность сертификатов используя как локальное доверенное хранилище сертификатов, так и в хранилище Mozilla. Из-за этого может возникнуть следующая ситуация: в браузере сертификат будет отображаться валидным, так как не просрочен и корневой сертификат УЦ присутствует в хранилище Mozilla, но на устройстве корневой сертификат УЦ отсутствует, из-за чего нарушаются доверительные отношения между устройством и сервером.
  3. Проверить цепочку сертификатов при помощи команды в openSSL:

    openssl s_client -debug -connect url:port
  4. Проверить наличие корневых и промежуточных сертификатов УЦ. Например, корневой сертификат HARICA TLS RSA Root CA 2021 присутствует в хранилище Mozilla, из-за чего браузер считает его валидным, но не присутствует на устройствах с OC Android ниже 14-й версии. Установка данного сертификат на сервер Indeed Key или публикатор вызовет ошибку установления доверительных отношений между устройствами и сервером. Из-за данной ошибки устройства, у которых данный сертификат отсутствует не  смогут получать push и регистрировать аутентификатор.
    Проверка наличия корневых сертификатов происходит следующим образом:
    1. Для устройств с OC Android: в настройках найдите пункт доверенные сертификаты или надёжные сертификаты, как на скриншоте. Далее проверьте, присутствует ли сертификат, установленный на сервере.

    2. Для устройств Apple: проверьте наличие сертификата, установленного на сервере, на данном сайте.
(4 голос(а))
Эта статья полезна
Эта статья бесполезна

Комментарии (0)
Портал технической поддержки компании Индид