%20%D0%B8%D0%BD%D0%BE%D0%B3%D0%B4%D0%B0%20%D0%BD%D0%B5%20%D0%B4%D0%BE%D0%B2%D0%B5%D1%80%D1%8F%D1%8E%D1%82%20%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%20%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%20%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%B0%D0%BC%3F.png)
Это довольно канонический вопрос... Надеюсь, вы не против.
В своей работе я часто устраняю неполадки в ситуациях, когда клиент, работающий на сервере Linux (обычно это приложение Java), не доверяет действительному подписанному сертификату — сертификату, которому доверяют браузеры. Наше обычное быстрое решение — добавить сертификат в хранилище доверия java cacerts, но меня раздражает, зачем это нужно.
По моему мнению, есть две возможности:
- Серверная сторона не отправляет полную цепочку (сертификат конечного объекта + промежуточные сертификаты) в правильном порядке, И клиент не доверяет промежуточным сертификатам (возможно, потому что они слишком старые).
- В клиентском хранилище доверенных сертификатов нет корневого сертификата, который можно было бы использовать в качестве якоря доверия (возможно, потому что он слишком старый).
Это точно? Если так, то, похоже, альтернативные возможности принудительного доверия сертификату конечного субъекта следующие:
- Настройте серверное приложение для отправки полной цепочки.
- Обновите клиент (например, java) до более новой версии. В моем случае обычно основной релиз java, который можно использовать, ограничен предварительными требованиями к программному обеспечению, но, возможно, каждый второстепенный релиз содержит обновленное хранилище доверия?
Любые мысли и разъяснения приветствуются.