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

493
Keshava

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

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

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

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

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

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

0
«Почему требуется наличие промежуточного ЦС» - вся цепочка должна быть доверенной, чтобы сертификат был доверенным. Просто доверять корневому центру сертификации недостаточно. Ramhound 6 лет назад 0
Я предположил, что, поскольку вы доверяете корневому CA, вы можете доверять всем сторонам, которые сертифицированы стороной, сертифицированной корневым CA, возможно, мое предположение наивно. Keshava 6 лет назад 0
@Keshava: если сервер предоставляет сертификаты сервера и цепочки, клиент может проверить полную цепочку доверия до локального корневого ЦС. Если серверы не предоставляют сертификаты цепочки, клиент не может построить локальную цепочку доверия, так как он не знает отсутствующие сертификаты цепочки. Обратите внимание, что сервер не должен предоставлять корневой CA в квитировании TLS и что сертификаты должны быть в правильном порядке. Steffen Ullrich 6 лет назад 0

1 ответ на вопрос

-2
Keshava

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

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

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

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

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