Почему клиенты (не браузеры) иногда не доверяют действительным подписанным сертификатам?

Почему клиенты (не браузеры) иногда не доверяют действительным подписанным сертификатам?

Это довольно канонический вопрос... Надеюсь, вы не против.

В своей работе я часто устраняю неполадки в ситуациях, когда клиент, работающий на сервере Linux (обычно это приложение Java), не доверяет действительному подписанному сертификату — сертификату, которому доверяют браузеры. Наше обычное быстрое решение — добавить сертификат в хранилище доверия java cacerts, но меня раздражает, зачем это нужно.

По моему мнению, есть две возможности:

  1. Серверная сторона не отправляет полную цепочку (сертификат конечного объекта + промежуточные сертификаты) в правильном порядке, И клиент не доверяет промежуточным сертификатам (возможно, потому что они слишком старые).
  2. В клиентском хранилище доверенных сертификатов нет корневого сертификата, который можно было бы использовать в качестве якоря доверия (возможно, потому что он слишком старый).

Это точно? Если так, то, похоже, альтернативные возможности принудительного доверия сертификату конечного субъекта следующие:

  • Настройте серверное приложение для отправки полной цепочки.
  • Обновите клиент (например, java) до более новой версии. В моем случае обычно основной релиз java, который можно использовать, ограничен предварительными требованиями к программному обеспечению, но, возможно, каждый второстепенный релиз содержит обновленное хранилище доверия?

Любые мысли и разъяснения приветствуются.

Связанный контент