Назад | Перейти на главную страницу

Доверие к ненадежному ЦС - могу ли я ограничить доверие системы к нему?

(Размещено в ServerFault вместо StackOverflow, потому что я считаю, что это касается конфигурации ОС больше, чем кода программирования).

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

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

Однако я (лично) не доверяю сертификату CA, основываясь на моем опыте работы с компанией, запускающей веб-сервис - меня не удивит, если он просочится в Интернет, и, что вызывает беспокойство, сертификат CA не имеет ограничений на использование ключей, наложенных на это (хотя внешние атаки MITM возможны, хотя и отдаленные, меня больше беспокоит утечка сертификата, используемого, например, для подписи кода).

Могу ли я сказать своему компьютеру (в настоящее время это серверный ящик, но в будущем - обычные клиентские ящики для настольных компьютеров) доверять ЦС, но только для заданного набора ключей и небольшого набора возможных имен субъектов (доменных имен )?

В настоящее время сервером является Windows Server 2012 R2, но он может работать на компьютере с Linux, хотя все настольные компьютеры - это компьютеры с Windows.

Да, это возможно. В случае с Windows есть функция под названием Cross-Certification или Qualified Subordination.

Идея состоит в том, что вы подписываете сертификат CA третьей стороны в своей среде. В результате удаленный сертификат SSL привязывается к вашему собственному корневому сертификату ЦС. Чтобы защитить себя от возможных мошеннических сертификатов, вы реализуете Name Constraints расширение сертификата, в котором вы указываете список допустимых имен. Если сторонний CA выдает сертификат для любого другого имени (явно не указанного в расширении Name Constraints), он будет автоматически отклонен вашим поставщиком CryptoAPI.

В дополнение к ограничениям имени вы можете описать ограничение расширенного использования ключей, указав Application Policies расширение сертификата в кросс-сертификате. Таким образом, ваш провайдер доверия успешно проверит только использование, указанное в Application Policies расширение.

Больше информации: Планирование и реализация перекрестной сертификации и квалифицированного подчинения с использованием Windows Server 2003

p.s. хотя статья написана против Windows Server 2003, статья по-прежнему применима к самой последней версии Windows Server.