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

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

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

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

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

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

1 ответ1

-2

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

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

Теперь, если закрытый ключ промежуточного ЦС по какой-то причине скомпрометирован, то это будет проблемой.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .