Создание SSL-соединения только с корневым CA в хранилище доверенных сертификатов

Создание SSL-соединения только с корневым CA в хранилище доверенных сертификатов

У меня есть клиент/серверное приложение SSL. У

моего клиента SSL в хранилище доверенных сертификатов настроен только один корневой центр сертификации (назовем его rootCA1).
Однако мой сервер ssl создает сертификат, подписанный промежуточным центром сертификации (назовем его interCA1).
У промежуточного центра сертификации есть свой сертификат (назовем его deviceCert), подписанный rootCA1 (которому доверяет клиент). Сервер SSL создает сертификаты interCA1, а также rootCA1 вместе с deviceCert во время ssl hello.

Теперь openssl отклоняет такое соединение на стороне клиента.

Openssl должен иметь возможность установить цепочку доверия, просматривая
deviceCert--signed by-->interCA1--signed by-->rootCA1

Так как он доверяет rootCA1 и цепочка доверия видна в моем понимании.

Так почему же это не срабатывает? Почему необходимо, чтобы промежуточные центры сертификации были настроены в хранилище доверия клиента?

решение1

Я думаю, причина настройки сертификатов всех промежуточных CA заключается в следующем.

Давайте ради аргумента предположим, что в цепочке доверия необходимо иметь только сертификат корневого CA.
Тогда клиент может доверять всем сертификатам, подписанным корневым CA, а также любым другим промежуточным CA, чей сертификат подписан корневым CA (или подписан любым другим промежуточным CA, имеющим сертификат, подписанный корневым CA).

Если же по какой-то причине закрытый ключ промежуточного центра сертификации будет скомпрометирован, то это станет проблемой.

Таким образом, настраивая промежуточные центры сертификации в хранилище доверенных сертификатов, клиент заявляет, что доверяет подписанным им сертификатам, и его закрытый ключ не скомпрометирован.

Конечно, есть CRL, но это уже подтема.

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