Это несколько канонический вопрос... Надеюсь, ничего страшного.
По своей работе я часто устраняю неполадки в ситуациях, когда клиент, работающий на сервере Linux (обычно приложение Java), не доверяет действительному подписанному сертификату — сертификату, которому доверяют браузеры. Наше обычное быстрое решение — добавить сертификат в хранилище доверенных сертификатов java cacerts, но меня раздражает, зачем это нужно.
В моем понимании есть два варианта:
- Сторона сервера не отправляет полную цепочку (сертификат конечного объекта + промежуточные сертификаты) в правильном порядке, И клиент не доверяет промежуточным сертификатам (возможно, потому, что они слишком старые).
- Хранилище доверия клиента не содержит корневого сертификата для использования в качестве якоря доверия (возможно, потому, что оно слишком старое).
Это точно? Если это так, то альтернативными возможностями принудительного доверия к сертификату конечного объекта являются:
- Настройте серверное приложение для отправки всей цепочки.
- Обновите клиент (например, java) до более новой версии. В моем случае, как правило, основная версия Java, которую можно использовать, ограничена предварительными программными требованиями, но, возможно, каждая дополнительная версия содержит обновленное хранилище доверия?
Приветствуются любые мысли о разъяснениях.