Шаблоны сертификатов Windows: как включить групповые (или OU) утверждения в клиентские сертификаты SSL/TLS

Шаблоны сертификатов Windows: как включить групповые (или OU) утверждения в клиентские сертификаты SSL/TLS

Я использую клиентские сертификаты X.509 для аутентификации набора клиентов Windows через Mutual TLS. Какие клиенты входят в этот набордолженкаким-либо образом администрироваться в AD, например, через членство в группе или родительское OU.

Примечание: вопрос относится к сертификатам компьютеров, а не к сертификатам пользователей. То есть любой пользователь должен иметь возможность использовать этот сертификат при запуске HTTPS-запроса с такого компьютера. (Это в дополнение к любому методу входа пользователя, который не является частью схемы аутентификации mTLS.)

Серверы должны иметь возможность определить, что клиентский компьютер, прошедший аутентификацию, является членом этого набора. Серверы — это контейнеры на базе Linux, а не часть AD/домена, поэтому у нас есть только информация в сертификате X.509.

Предоставляют ли шаблоны сертификатов Windows какой-либо метод передачи такого заявления как части сертификата X.509? Кажется, я могу ограничить набор компьютеров, которые могут получить такой сертификат, но тогда я не нахожу способа пометить эти сертификаты таким образом, чтобы сервер мог их идентифицировать.

  • Сертификат X.509 не содержит имени или идентификатора административного шаблона, поэтому я не могу настроить сервер на его проверку.
  • Кажется, что гибкость в настройке субъектов ограничена, в частности, нет метода сопоставления любой информации AD с полем субъекта. Это было бы идеально - я что-то упускаю?
  • Я думал об использовании специального промежуточного центра сертификации для этих шаблонов, но это кажется слишком сложным для таких базовых требований.

Может быть, есть другой аспект сертификата X.509, который можно задать через шаблон? Или я могу использовать другое утверждение, чем group/OU?

решение1

Ответ — нет. Членство в группе — это довольно динамическое свойство, а не статическое и не часть личности владельца сертификата. В результате вы не можете включить членство в группу в сертификат, поскольку эта информация не принадлежит личности. И каждый раз, когда членство в группе меняется, вам приходится перевыпускать сертификат. Сертификаты действительны в течение довольно длительного периода. Это очень несовершенное решение.

Т.е. любой пользователь должен иметь возможность использовать этот сертификат при запуске HTTPS-запроса с такого компьютера.

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

Серверы представляют собой контейнеры на базе Linux и не являются частью AD/домена.

интересно, как серверы на базе Linux должны проверять фактическое членство в группах?

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

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

Это означает, что ваши требования:

Групповое членство для компьютеров должно администрироваться в AD.

и

Серверы представляют собой контейнеры на базе Linux и не являются частью AD/домена.

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

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