Active Directory Certificate Services: корпоративный PKI

Архитектура корпоративного PKI

Инфраструктура открытых ключей (PKI) на базе Active Directory Certificate Services (AD CS) обеспечивает централизованную выдачу и управление сертификатами в домене. Корпоративный PKI используется для:

  • SSL/TLS-сертификаты — для внутренних веб-сервисов и порталов
  • Аутентификация — вход по смарт-картам, EAP-TLS для Wi-Fi
  • Шифрование почты — S/MIME для Outlook/Exchange
  • Code Signing — подпись скриптов и приложений
  • IPsec — сертификаты для VPN-туннелей между филиалами

Рекомендуемая двухуровневая архитектура:

  1. Offline Root CA — корневой ЦС, выключен и хранится в сейфе. Выдаёт только сертификаты подчинённым ЦС
  2. Enterprise Issuing CA — подчинённый ЦС, интегрированный с AD. Выдаёт сертификаты пользователям и компьютерам

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

Установка Offline Root CA

Root CA устанавливается на отдельном сервере (не в домене), который после настройки отключается от сети.

Создайте файл конфигурации CAPolicy.inf в C:\Windows\:

[Version]
Signature="$Windows NT$"

[Certsrv_Server]
RenewalKeyLength=4096
RenewalValidityPeriod=Years
RenewalValidityPeriodUnits=20
CRLPeriod=Months
CRLPeriodUnits=12
CRLDeltaPeriod=Days
CRLDeltaPeriodUnits=0
LoadDefaultTemplates=0

Установите роль:

Install-WindowsFeature AD-Certificate -IncludeManagementTools

Install-AdcsCertificationAuthority `
    -CAType StandaloneRootCA `
    -CACommonName "Company Root CA" `
    -KeyLength 4096 `
    -HashAlgorithmName SHA256 `
    -ValidityPeriod Years `
    -ValidityPeriodUnits 20 `
    -CryptoProviderName "RSA#Microsoft Software Key Storage Provider"

Настройте точки распространения CRL и AIA (они будут доступны через веб-сервер подчинённого ЦС):

certutil -setreg CA\CRLPublicationURLs "1:C:\Windows\system32\CertSrv\CertEnroll\%3%8.crl\n2:http://pki.company.ru/CertEnroll/%3%8.crl"
certutil -setreg CA\CACertPublicationURLs "1:C:\Windows\system32\CertSrv\CertEnroll\%3%4.crt\n2:http://pki.company.ru/CertEnroll/%3%4.crt"

Установка Enterprise Issuing CA

Issuing CA устанавливается на сервере — члене домена Active Directory:

Install-WindowsFeature AD-Certificate, ADCS-Web-Enrollment -IncludeManagementTools

Install-AdcsCertificationAuthority `
    -CAType EnterpriseSubordinateCA `
    -CACommonName "Company Issuing CA" `
    -KeyLength 4096 `
    -HashAlgorithmName SHA256 `
    -CryptoProviderName "RSA#Microsoft Software Key Storage Provider"

После установки будет создан файл запроса (.req). Перенесите его на Root CA (через USB), подпишите и верните:

# На Root CA:
certreq -submit "C:\SubCA.req"

# Выпустите сертификат в оснастке certsrv.msc
# Экспортируйте сертификат в .cer файл

# На Issuing CA: установите сертификат
certutil -installcert "C:\IssuingCA.cer"
Start-Service certsvc

Установите веб-регистрацию:

Install-AdcsWebEnrollment -Confirm:$false

Публикация CRL и AIA

Настройте IIS на Issuing CA для публикации CRL:

# Создание виртуальной директории в IIS
New-WebVirtualDirectory -Site "Default Web Site" `
    -Name "CertEnroll" `
    -PhysicalPath "C:\Windows\System32\CertSrv\CertEnroll"

# Разрешить double escaping для файлов .crl с символом +
Set-WebConfigurationProperty -PSPath 'IIS:\Sites\Default Web Site\CertEnroll' `
    -Filter system.webServer/security/requestFiltering `
    -Name allowDoubleEscaping -Value $true

Скопируйте CRL и сертификат Root CA в директорию CertEnroll на Issuing CA. Проверьте доступность: http://pki.company.ru/CertEnroll/

Шаблоны сертификатов

Шаблоны определяют параметры выдаваемых сертификатов. Создавайте дубликаты стандартных шаблонов с кастомными настройками:

Откройте Certificate Templates Console (certtmpl.msc). Для веб-сервера:

  1. Правый клик по шаблону Web ServerDuplicate Template
  2. General: имя «Company Web Server», срок действия — 2 года
  3. Subject Name: «Supply in the request» (имя указывается при запросе)
  4. Security: группе «Web Servers» — Enroll + Autoenroll
  5. Extensions → Application Policies: Server Authentication

Для автоматической выдачи сертификатов компьютерам:

  1. Дубликат шаблона Computer
  2. Security: Domain Computers — Enroll + Autoenroll
  3. Subject Name: Build from AD information (DNS name)

Опубликуйте шаблоны на Issuing CA:

# Добавить шаблоны для выдачи
Add-CATemplate -Name "CompanyWebServer"
Add-CATemplate -Name "CompanyComputer"

Автоматическая выдача сертификатов через GPO

Автоматическая регистрация (autoenrollment) — одно из главных преимуществ Enterprise CA. Настройте GPO:

Откройте Group Policy Management, создайте GPO «PKI Autoenrollment»:

  • Computer Configuration → Policies → Windows Settings → Security Settings → Public Key Policies → Certificate Services Client - Auto-Enrollment
  • Включите: Enroll certificates automatically
  • Отметьте: Renew expired certificates, update pending certificates, and remove revoked certificates
  • Отметьте: Update certificates that use certificate templates

Аналогичные настройки в User Configuration для пользовательских сертификатов (S/MIME, EFS).

Привяжите GPO к нужным OU. После обновления политики (gpupdate /force) компьютеры автоматически получат сертификаты по опубликованным шаблонам.

Проверка на клиенте:

certutil -pulse
certlm.msc  # оснастка сертификатов компьютера

Распространение корневого сертификата

Enterprise CA автоматически публикует свой сертификат в AD. Для рабочих станций вне домена или Linux-серверов распространите корневой сертификат вручную:

# Экспорт корневого сертификата
certutil -ca.cert C:\RootCA.cer

# На Linux
sudo cp RootCA.cer /usr/local/share/ca-certificates/company-root.crt
sudo update-ca-certificates

Запрос сертификатов вручную

Для серверов и сервисов, не поддерживающих autoenrollment, используйте ручной запрос:

# Создание запроса через PowerShell
$INF = @"
[NewRequest]
Subject = "CN=portal.company.ru,O=Company,L=Moscow,C=RU"
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=portal.company.ru&"
_continue_ = "dns=portal&"
"@

$INF | Out-File C:\portal.inf
certreq -new C:\portal.inf C:\portal.req
certreq -submit -config "issuing-ca\Company Issuing CA" C:\portal.req C:\portal.cer
certreq -accept C:\portal.cer

Или через веб-интерфейс: откройте https://issuing-ca/certsrv, выберите «Request a certificate → Advanced certificate request» и загрузите CSR.

Мониторинг и обслуживание PKI

Регулярное обслуживание PKI критически важно. Основные задачи:

Мониторинг срока действия сертификата CA:

$CA = Get-CACrlDistributionPoint
$CACert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {
    $_.Subject -like "*Issuing CA*"
}
$DaysLeft = ($CACert.NotAfter - (Get-Date)).Days
if ($DaysLeft -lt 180) {
    Write-Warning "Сертификат CA истекает через $DaysLeft дней!"
}

Публикация CRL:

Root CA отключён — вручную публикуйте CRL до истечения (каждые 6–12 месяцев):

  1. Включите Root CA
  2. Опубликуйте CRL: certutil -CRL
  3. Скопируйте CRL на Issuing CA в папку CertEnroll
  4. Выключите Root CA

Аудит выданных сертификатов:

# Все выданные сертификаты
certutil -view -restrict "Disposition=20" -out "RequestID,CommonName,NotAfter" csv > issued.csv

# Сертификаты, истекающие в ближайшие 30 дней
$Expiring = certutil -view -restrict "NotAfter<=$(Get-Date).AddDays(30),Disposition=20" -out "RequestID,CommonName,NotAfter"
Write-Host $Expiring

Резервное копирование PKI

Потеря закрытого ключа CA — катастрофа, требующая пересоздания всей инфраструктуры. Регулярно создавайте резервные копии:

# Бэкап CA (база + ключ)
Backup-CARoleService -Path "C:\CABackup" -KeepLog -Password (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force)

# Бэкап включает:
# - Базу данных CA (edb-файлы)
# - Закрытый ключ (PFX)
# - Настройки реестра
# - Шаблоны

Также экспортируйте закрытый ключ отдельно:

certutil -backupkey "C:\CABackup\PrivateKey"
# Пароль обязателен — запомните его!

Храните бэкап в защищённом месте (сейф, зашифрованный носитель). Бэкап Root CA выполняйте при каждом включении сервера. Бэкап Issuing CA — еженедельно через планировщик задач.

Восстановление:

Restore-CARoleService -Path "C:\CABackup" -Force -Password (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force)
Start-Service certsvc

Часто задаваемые вопросы

Offline Root CA защищает корневой закрытый ключ от компрометации. Если злоумышленник получит доступ к ключу Issuing CA, вы отзываете его сертификат и создаёте новый — доверие к корню сохраняется. Если скомпрометирован Root CA — придётся пересоздавать всю PKI и переустанавливать доверие на всех устройствах.

Технически возможно, но не рекомендуется. Issuing CA лучше устанавливать на выделенный сервер — член домена. Причины: разделение ролей безопасности, возможность независимого обслуживания, невозможность понизить DC с ролью CA. Для небольших организаций (до 100 ПК) допустимо совмещение, но с пониманием рисков.

За 6 месяцев до истечения: включите Root CA, на Issuing CA выполните certutil -renewcert (или через оснастку certsrv.msc → All Tasks → Renew CA Certificate). Выберите, создавать ли новую ключевую пару. Подпишите запрос на Root CA, установите новый сертификат на Issuing CA. Обновите CRL на Root CA.

Откройте оснастку certsrv.msc → Issued Certificates → найдите сертификат → правый клик → Revoke Certificate. Выберите причину отзыва (Key Compromise, CA Compromise, Cessation of Operation). После отзыва опубликуйте обновлённый CRL: certutil -CRL. Клиенты проверят CRL при следующем обращении.

Да, но по умолчанию это отключено в шаблонах. Создайте дубликат шаблона Web Server, на вкладке Subject Name выберите «Supply in the request». При запросе укажите CN=*.company.ru. Для безопасности ограничьте круг лиц, имеющих право запрашивать wildcard, через вкладку Security шаблона.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#Active Directory Certificate Services#PKI#корпоративный центр сертификации#AD CS#шаблоны сертификатов#автоматическая выдача сертификатов#Enterprise CA#корневой ЦС
Комментарии 0

Оставить комментарий

загрузка...