Служба сертификации Active Directory (AD CS) позволяет развернуть вам собственную инфраструктуру PKI в доменной сети, и используется для выдачи и управления сертификатами. В этой статье мы рассмотрим сценарий развертывания центра сертификации: установку корпоративной службы AD CS на Windows Server, настройку групповой политики выдачи сертификатов в домене.
В продуктивной среде не рекомендуется развёртывать службы AD CS на контроллере домене Active Directory. В продуктивной среде нужно реализовать двухуровневую архитектуру PKI:
- Отдельный корневой сервер сертификации (Root CA) – это сервер выдает сертификат для подписи выдающего сервера сертификации. После генерации доверенного корневого сертификата и CRL, этот сервер рекомендуется выключить (это позволит снизить риски компрометации ключа). В нашем примере этот сервер называется RootCA;
- Выдающий сервер сертификации (Subordinate CA) – это основной сервер, который будет выдавать сертификаты клиентам в организации. Также он хранит список отозванных сертификатов и используется для проверки отозванных сертификатов. Имя сервера subordCA
Служба сертификации Active Directory Certificate Services это одна из стандартных ролей Windows Server 2022/2019/2016.
Сначала нужно настроить корневой CA (сервер RootCA). Это Windows Server, который не нужно добавлять в домен AD.
Запустите Server Manager и выберите Add roles and features;
- Выберите текущий сервер, в списке ролей отметьте Active Directory Certification Authority и нажмите Next;
- В списке компонентов роли AD CS выберите Certification Authority;
- После окончания установки, нужно выполнить первичную настройку роли ADCS. Для этого в Server Manager нажмите на флажок и щелкните по пункту Configure Active Directory Certificate Services on the destination server;
- Выберите сервисы для настройки;
- Так как сервер rootCA не добавлен в домен AD, выберите здесь Standalone CA -> Root CA;
- Выберите Create a new private key;
Параметры ключа оставьте по умолчанию:
Cryptographic provider:
RSA
Key length:2048
Hash algorithm:SHA256
- Имя CN можно оставить без изменений;
- На странице Validity period укажите срок действия сертификата CA (укажите 15 лет здесь);
- Оставьте пути к базе данных CA и логам по умолчанию: c:\windows\system32\certlog
- Если все настроено верно, появится надпись: Configuration succeeded.
Add-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools
После установки роли AD CS выполните команду:
Install-AdcsCertificationAuthority -CAType EnterpriseRootCA
Для управления ADCS используется специальная оснастка Certification Authority (certsrv.msc
). Запустите ее.
Затем откройте каталог C:\Windows\System32\CertSrv\CertEnroll и скопируйте оттуда сертификат и список отзыва сертификатов. Эти файлы понадобятся в дальнейшем при настройке выдающего центра сертификации.
Теперь переходим к настройке второго сервера Subordinate CA (subordCA).
- Установите на нем роль AD CS, со следующими компонентами:
- Certification Authority
- Certification Authority Web Enrollment
- Certification Authority Web Service
- Выберите тип CA — Subordinate CA;
- На странице Private Key выберите Create a new private key;
- Настройки криптографии оставьте по умолчанию, задайте Common Name
- На странице Certificate request выберите Save a certificate request to file on the target machine;
- Нажмите Configure чтобы начать установку.
Теперь нужно получить сертификат от вашего rootCA на основе вашего запроса:
- Скопируйте файл *.reg в корень диска C:\ на rootCA;
- Выполните команду:
certreq -submit "C:\subordCA.tect.loc_ SUBORDCA-1.req"
- Появится окно Certification Authority List, в котором нужно выбрать ваш rootCA и нажмите OK;
- Теперь откройте консоль Certification Authority на Root CA и перейдите в раздел Pending Requests. Ваш запрос должен появится в этой консоли. Запомните номер запроса, например Request ID 2. Щелкните по нему правой кнопкой и выберите All Tasks -> Issue;
- Экспортируйте подписанный сертификат в файл с помощью команды:
certreq -retrieve 2 C:\SubordCA.crt
Скопируйте файл SubordCA.crt на промежуточный сервер сертификации. Установите корневые сертификаты и список отзыва, которые вы скопировали ранее:
certutil -dspublish -f "C:\PS\RootCA.crt"
certutil -addstore -f root "C:\PS\RootCA.crt"
certutil -addstore -f root "C:\PS\RootCA.crl"
Теперь установите сертификат, который вы подписали:
certutil -installcert C:\PS\SubordCA.crt
Запустите службу CertSrv. Ваш промежуточный сервер сертификации готов к выдаче сертификатов. Хост RootCA можно отключить.
Теперь можно настроить в домене групповую политику для автоматической выдачи сертификатов (autoenrollment) для клиентов домена.
- Откройте консоль Group Policy Management, щелкните по корню домена и выберите “ Create a GPO in this domain, and Link it here…”;
- Укажите имя политики и перейдите в режим редактирования;
- Перейдите в Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Public Key Policies
- Выберите шаблон «Certificate Services Client — Auto-Enrollment»
- Включите политику и настройте ее следующим образом
Configuration mode: Enabled
Renew expired certificates, update pending certificates and remove revoked certificate
Update certificates that use certificate templates
Обновите политики на клиентах и проверьте, что ваш корневой сертификат появился в Trusted Root Certificates.
3 комментария
Я правильно понял что второй сервер Subordinate CA (subordCA) должен быть именно физически вторым (ну или виртуальный), т.е. на один сервер нельзя поставить и Subordinate CA и Rooy CA?
Да. Здесь должно быть два сервера. Причем первый Root CA после подписи ключа Subordinate CA рекомендуется отключить от сети (изолировать)
Статья краткая и очень понятная. Спасибо за труд.
Но. Возможно следует добавить описание продления списка отзыва сертификатов для Root CA.
Всего пара строк: Правой кнопкой по отозванные сертификаты и свойства. И поставить период когда вы готовы вручную переносить заново этот файл на подчиненный сервер.
Я этого не сделал и было неожиданностью отказ стартовать на подчиненном сервере службы сертификации через неделю.
И неплохо бы добавить информацию как увеличить срок действия сертификата для подчиненного сервера.