Я работаю с развертываниями приложений Java, которые полагаются на интеграцию HTTPS с клиентами моей компании. Мои приложения отправляют HTTPS-запросы клиентам и наоборот.
Я хотел бы знать, какова наилучшая практика, которой я должен следовать (с точки зрения безопасности) при настройке своих доверенных складов. Какой из следующих сертификатов мне следует доверять (например: добавить в мое изначально пустое хранилище доверенных сертификатов) и почему ?
1 Конечный сертификат сервера моего клиента
2 Промежуточный сертификат CA, чей закрытый ключ использовался для подписи сертификата # 1
3 Корневой (самозаверяющий) сертификат CA, чей закрытый ключ использовался для подписи сертификата # 2
У меня сложилось впечатление, что я должен добавить сертификат # 2 или # 3 , потому что:
Доверять только сертификату # 1 звучит небезопасно, поскольку кажется, что это нарушает цель создания цепочки доверия
Доверяющий сертификат # 1 наряду с любым из двух других звуков излишним, потому что # 1 будет просто игнорироваться
Верны ли мои предположения? Можете ли вы предоставить больше аргументов относительно того, почему это должно быть сделано? Существуют ли какие-либо другие последствия для безопасности, связанные с доверием только листового сертификата ( # 1 )?
«Следствие» вышеуказанных вопросов: прямое доверие к листовому сертификату не помешает моему клиенту проверитьправильность "CN" в листовом сертификате (например: * .domain.com) или это сделано до / после проверки цепочки доверия?