Contents of this directory is archived and no longer updated.

Ссылки на другие материалы из этой серии:

В первой части мы рассмотрели общие положения по системе автоматической подачи заявок на сертификаты — autoenrollment и сегодня поговорим об одной составляющей этой системы — Automatic Certificate Request (или сокращённо просто ACR). Пержде чем начать экшн, следует поговорить о шаблонах версии 1.

Шаблоны версии 1 (V1 Templates)

При установке в лесу Enterprise Certification Authority, в Active Directory устанавливаются и преднастроенные шаблоны сертификатов. Зачем они нужны? Поскольку сертификаты у нас могут использоваться для решения различного рода задач, например, для SSL или аутентификации смарт-картой или для установки цифровой подписи файлов. В связи с этим конечные сертификаты будут очень сильно различаться по настройкам. Безусловно, очень трудно запомнить все требования для каждого типа сертификатов и вручную их заполнять. Для этого Microsoft с ролью CA поставляет ряд преднастроенных шаблонов, которые отвечают требованиям наиболее частых случаев использования. Чтобы посмотреть доступные шаблоны в лесу необходимо запустить оснастку Certificate Templates (certtmpl.msc) и получите примерно такое окно:

Certificate Templates MMC snap-in

Здесь мы видим несколько колонок:

  • Template Display Name — это отображаемое и понятное имя шаблона. Как правило используется только для отображения. Внутренние механизмы используют сокращённое common name;
  • Minimum Supported CAs — указывает версию и редакцию ОС, под которой должна работать служба Certification Authority для выдачи такого сертификата.
  • Version — внутренняя версия ревизии шаблона. Ревизия состоит из Major revision (число до точки) и Minor revision (число после точки). Имеет достаточно важное значение, о котором поговорим чуть ниже;
  • Windows XP Autoenrollment — указывает, может ли данный шаблон использоваться для классического автоэнроллмента (только для шаблонов версии 2 и 3);
  • Intended Purposes — уазывает целевое назначение сертификатов данного шаблона.

В настоящее время существует 3 версии шаблонов: 1, 2 и 3 версии. Важно понимать, что эти версии не имеют  ничего общего с внутренней версией конкретного шаблона, которая показана в оснастке. Что такое шаблоны версии 1? Это стандартные и неуправляемые шаблоны. Их можно отличить по одному из 2-х признаков:

  • В колонке Minimum Supported CAs указано Windows 2000;
  • Major revision является числом от 1 до 9.

V1 Template

шаблоны версии 1 являются преднастроенными и не поддерживают какую-либо модификацию, кроме назначения прав во вкладке Security. Microsoft в своё время хорошенько пожадничало (вплоть до выхода Windows Server 2008 R2), заставляя кастомеров приобретать Windows Server 2003/2008 Enterprise или Datacenter Edition редакции для серверов CA, поскольку только эти редакции могли издавать сертификаты на основе управляемых шаблонов версии 2 или 3 и использовать все возможности автоэнроллмента. И даже Windows Server 2008 Standard в этом плане был почти такой же, как и Windows 2000 Server. Но это было изменено с выходом Windows server 2008 R2, потому что PKI всё больше и больше входила в сектор малого бизнеса и адекватные инструменты им стали столь же необходимы как и более крупным компаниям. Именно по этой причине Windows Server 2008 R2 Standard Edition обладает большинством тех возможностей, которые раньше были доступны только в Enterprise и Datacenter редакциях.

Поскольку шаблоны версии 1 неуправляемы, поэтому тут говорить особо не о чем, поэтому продолжим дальше.

Automatic Certificate Request

Примечание: данный материал не охватывает всех особенностей, которые присущи для Windows 7 и Windows Server 2008 R2. О них пойдёт речь в следующих частях.

Но для кого-то это может стать секретом, но даже Windows 2000 (и Windows Server 2003/2008/2008R2 Std, EE, DC) поддерживали базовый автоэнроллмент — Automatic Certificate Request. Это позволяло автоматически распространять сертификаты для компьютеров на основе шаблонов версии 1. Для включения данного режима нужно сделать следующее:

  • в оснастке CertSrv.msc любого Enterprise CA в секции Certificate Templates убедиться, что в списке присутствует нужный шаблон версии 1 (например, шаблон Computer или IPsec). Если нет, то All Tasks –> New –> Certificate Template to issue и добавить шаблон;
  • в редакторе групповой политики (Group Policy Management) создать новый объект групповой политики или отредактировать существующую политику по адресу:
    Computer Configuration –> Windows Settings –> Security Settings –> Public Key Policies –> Certificate Services Client — Autoenrollment
    данный элемент политики следует установить в состояние Enabled и при необходимости выбрать автоматическое обновление просроченных сертификатов и удалении отозванных сертификатов из хранилища. Этим самым мы включим сам Autoenrollment engine, который используется для ACR.
  • в редакторе групповой политики (обычно в той же самой, где включали движок автоэнроллмента) по адресу:
    Computer Configuration –> Windows Settings –> Security Settings –> Public Key Policies –> Automatic Certificate Request Settings
    создать необходимые запросы сертификатов. При этом в каждый элемент вы можете включить только один шаблон версии 1.
  • прилинкуйте созданную или отредактированную политику к нужному OU (чаще всего её применяют для всего домена).

Примечание: опция Renew expired certificates, update pending certificates, and remove revoked certificates не позволяет удалять отозванные и/или просроченные сертификаты, у которых во вкладке Request Handling в списке Purposes содержится Encryption.

И как это работает.

При срабатывании триггера автоэнроллмента клиент считывает групповую политику с контроллера домена и определяет настройки политики. Эти настройки записываются в DWORD значение реестра AEFlags по адресу: HKLM\SOFTWARE\Policies\Microsoft\Cryptography\Autoenrollment; Флаги могут иметь следующие значения или сумму следующих значений:

Значение флага AEFlags Описание флага
0x0 Политика автоэнроллмента явно включена. Данный флаг инструктирует клиента производить процедуру автоэнроллмента при каждом срабатывании триггера.
0x1 Соответствует включённому чек-боксу Update certificates that use certificate templates. Не используется в ACR.
0x2 Инструктирует клиента обновлять просроченные сертификаты автоматически. Соответствует установленному чек-боксу Renew expired certificates, update pending certificates, and remove revoked certificates.
0x4 Если на сервере CA в Policy Module установлена выдача сертификатов только после явного разрешения администратора CA, то данный флаг позволяет клиенту посылать на сервер CA запросы на получение сертификатов, которые находились в статусе Pending. Соответствует установленному чек-боксу Renew expired certificates, update pending certificates, and remove revoked certificates.
0x8000 Политика автоэнроллмента выставлена в значение Disabled и его триггер срабатывать не будет. В результате чего клиент не будет пытаться автоматически запросить сертификаты с сервера CA.
N/A Отсутствие значения показывает, что политика не определена.

Примечание: триггер автоэнроллмента срабатывает при следующих действиях:

  • обновление групповой политики;
  • добавление машины в домен любым доступным способом.

Примечание: при установлении флажка на Renew expired certificates, update pending certificates, and remove revoked certificates активируются оба значения: 0x2 и 0x4. Из графического интерфейса не представляется возможным устанавливать эти флаги отдельно.

Далее клиент скачивает сертификаты из Active Directory:

  • сертификаты CA из контейнера по адресу:
    CN=AIA, CN=Public Key Services, CN=Services, CN=Configuration, DC=ForestRootDomain
  • сертификаты корневых CA из контейнера по адресу:
    CN=Certification Authorities, CN=Public Key Services, CN=Services, CN=Configuration, DC=ForestRootDomain
  • сертификаты агентов восстановления из контейнера по адресу:
    CN=KRA, CN=Public Key Services, CN=Services, CN=Configuration, DC=ForestRootDomain
  • сертификаты CA, которые могут издавать сертификаты для аутентификации по Kerberos из записи NTAuthCertificates по адресу:
  • CN=Public Key Services, CN=Services, CN=Configuration, DC=ForestRootDomain.

На основе этих сертификатов обновляется локальное хранилище сертификатов. Теперь осталось получить список шаблонов из Active Directory по адресу:

CN=Certificate Templates, CN=Public Key Services, CN=Services, CN=Configuration, DC=ForestRootDomain

После чего читается следующий раздел реестра:

HKLM\SOFTWARE\Policies\Microsoft\SystemCertificates\ACRS\CTLs\<HashOfData>

в котором хранятся шаблоны для ACR (которые мы указали в политике). Шаблоны хранятся в BLOB формате. Когда шаблоны для ACR получены, клиент читает разрешения на шаблоны и из шаблонов выбирает только те, которые указаны в реестре и для которых у учёной записи компьютера есть права Read и Enroll.

Примечание: это частая ошибка, когда на компьютерные шаблоны не выданы права для учётной записи компьютера. И для успешного энроллмента, учётная запись компьютера или группа, в которой он состоит, должен иметь оба права: Read и Enroll.

Следующим этапом клиент генерирует 2 списка:

  • ToBeAdded — в этот список попадут все сертификты, которые получены в результате последующих операций.
  • ToBeDeleted — в этот список попадут все сертификаты, срок которых истёк и/или истекает (прошло более 80% срока жизни сертификата). А так же отозванные сертификаты.

Примечание: как я уже говорил, сертификаты у которых в Purpose содержится Encryption не помещаются в список ToBeRemoved.

Примечание: список ToBeDeleted будет создаваться только если выставлен чек-бокс Renew expired certificates, update pending certificates, and remove revoked certificates. В действительности процесс обработки этого списка отличается от написанного. Это сделано для лучшего понимания его работы. В реальности все сертификаты из контейнера Personal попадают в этот список, после чего за счёт фильтрации необходимые сертификаты удаляются из этого списка.

Клиент обновляет данные из контейнера Certificate Enrollment Requests локального хранилища сертификатов. В этом контейнере хранятся копии запросов на сертификаты, которые требуют ручного одобрения администратора CA и клиент удаляет те запросы, которые старше 60 дней. И клиент пытается получить сертификаты для каждого из запросов. Если статус запроса остаётся Pending (т.е. ещё не одобрен администратором), то переходит к следующему запросу. Если статус запроса Issued — клиент посылает запрос на получение сертификата. По получении сертификата, он помещается в список ToBeAdded. Если статус запроса Denied, то запрос удаляется из контейнера.

Примечание: эту операцию клиент будет делать только при условии, что в политике выставлен чек-бокс на Renew expired certificates, update pending certificates, and remove revoked certificates.

Когда запросы в ожидании обработаны, клиент обрабатывает контейнер Personal и список ToBeDeleted. Если сертификат на основе шаблона(-ов) политики ACR находится в контейнере Personal и содержится в списке ToBeDeleted, или вообще отсутствует в контейнере Personal, то для этих сертификатов генерируется новый запрос. Если сертификат есть в контейнере Personal, но не содержится в списке ToBeDeleted, то данный шаблон пропускается.

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

Сегодня мы посмотрели два интересных момента: особенности шаблонов версии 1 и работу Automatic Certificate Request. В следующих частях мы рассмотрим шаблоны версии 2 и 3 и классический автоэнроллмент. Так что не отключайтесь.


Share this article:

Comments:

Dr.Sigmund
Dr.Sigmund 09.08.2012 14:32 (GMT+3) Certificate Autoenrollment от А до Я (часть 2) — V1 Templates и Automatic Certificate Request

... Эти настройки записываются в DWORD значение реестра AEFlags по адресу: ... Не AEFlags, а AEPolicy.

Vadims Podāns
Vadims Podāns 10.08.2012 09:36 (GMT+3) Certificate Autoenrollment от А до Я (часть 2) — V1 Templates и Automatic Certificate Request

Да, всё правильно. Спасибо за поправку. Чуть позже я поправлю пост.

Comments are closed.