А вот и финальная третья часть нашей серии статей о центре сертификации на предприятии. Сегодня рассмотрим развертывание службы сертификатов на примере Windows Server 2016. Поговорим о подготовке контроллера домена, подготовке веб-сервера, установке корневого и издающего центров сертификации и об обновлении сертификатов. Заглядывайте под кат!
Первая часть серии
Вторая часть серии
Словарь терминов
В этой части серии использованы следующие сокращения и аббревиатуры:
- PKI (Public Key Infrastructure) — инфраструктура открытого ключа, набор средств (технических, материальных, людских и т. д.), распределённых служб и компонентов, в совокупности используемых для поддержки криптозадач на основе закрытого и открытого ключей. Поскольку аббревиатура ИОК не является распространённой, здесь и далее будет использоваться более знакомая англоязычная аббревиатура PKI.
- X.509 — стандарт ITU-T для инфраструктуры открытого ключа и инфраструктуры управления привилегиями.
- ЦС (Центр Сертификации) — служба выпускающая цифровые сертификаты. Сертификат — это электронный документ, подтверждающий принадлежность открытого ключа владельцу.
- CRL (Certificate Revocation List) — список отзыва сертификатов. Подписанный электронный документ, публикуемый ЦС и содержащий список отозванных сертификатов, действие которых прекращено по внешним причинам. Для каждого отозванного сертификата указывается его серийный номер, дата и время отзыва, а также причина отзыва (необязательно). Приложения могут использовать CRL для подтверждения того, что предъявленный сертификат является действительным и не отозван издателем… Приложения могут использовать CRL для подтверждения, что предъявленный сертификат является действительным и не отозван издателем.
- SSL (Secure Sockets Layer) или TLS (Transport Layer Security) — технология обеспечивающая безопасность передачи данных между клиентом и сервером поверх открытых сетей.
- HTTPS (HTTP/Secure) — защищённый HTTP, является частным случаем использования SSL.
- Internet PKI — набор стандартов, соглашений, процедур и практик, которые обеспечивают единый (унифицированный) механизм защиты передачи данных на основе стандарта X.509 по открытым каналам передачи данных.
- CPS (Certificate Practice Statement) — документ, описывающий процедуры управления инфраструктурой открытого ключа и цифровыми сертификатами.
Общий план развёртывания
Для развёртывания службы сертификатов нам потребуется четыре машины с Windows Server 2016, которые будут выполнять следующие функции:
- Контроллер домена — необходим для функционирования домена Active Directory;
- Веб-сервер — будет обеспечивать доступ к сертификатам ЦС и спискам отзывов для клиентов;
- Корневой ЦС — будет выполнять функции корневого ЦС;
- Подчинённый ЦС — будет выполнять функции издающего ЦС.
Развёртывание PKI будет проходить поэтапно на каждом сервере в том порядке, в котором они указаны выше. Подготовка контроллера домена будет сводиться к обеспечению функций Active Directory, GPO и учётных записей.
Подготовка контроллера домена
Перед развёртыванием PKI необходимо убедиться в работоспособности домена Active Directory и что все необходимые серверы (а именно, веб-сервер и подчинённый ЦС) введены в домен. А так же, что подготовлены необходимые учётные записи. На данном этапе нам потребуется только учётная запись с правами Enterprise Admins.
Ряд операций на подчинённом ЦС требуют прав Enterprise Admins, поскольку производится запись в раздел configuration naming context. Если это корневой домен леса, то для этих операций достаточно прав Domain Admins.
Следующим шагом будет конфигурирование политики автоматической выдачи сертификатов (autoenrollment). Эта политика нужна будет в процессе эксплуатации служб сертификатов для автоматической выдачи и обновления истёкших сертификатов на клиентах. Политика настраивается в конфигурации компьютера и пользователя:
- Computer ConfigurationPoliciesWindows SettingsSecurity SettingsPublic Key InfrastructureCertificate Services Client – Auto-Enrollment
- User ConfigurationPoliciesWindows SettingsSecurity SettingsPublic Key InfrastructureCertificate Services Client – Auto-Enrollment
Политика в обоих разделах должна быть сконфигурирована как показано на следующей картинке:
Сконфигурированный объект групповых политик (GPO) должен быть пристыкован к корню домена. Данную процедуру необходимо повторить во всех доменах текущего леса Active Directory.
Далее, необходимо создать запись типа CNAME с именем CDP на сервере ДНС, который будет указывать на веб-сервер (IIS). Эту процедуру необходимо выполнить как на внутреннем, так и на внешнем (который обслуживает зону в интернете) серверах ДНС. Запись можно создать при помощи PowerShell:
Add-DnsServerResourceRecord -CName -Name "cdp" -HostNameAlias "iis.contoso.com" -ZoneName "contoso.сom"
Подготовка веб-сервера
На веб-сервере нам потребуется выполнить следующее: установить службу IIS (если ещё не установлена), создать общую папку и сконфигурировать веб-сайт на использование этой папки.
- Установка службы IIS
Для установки службы IIS можно воспользоваться следующей командой:
Install-WindowsFeature -Name Web-Server, Web-WebServer -IncludeManagementTools
- Создание папки PKIdata
Согласно нашей конфигурационной таблице (см. часть 2), для хранения сертификатов ЦС и списков отзыва нам потребуется общая папка с сетевым именем PKI по следующему пути: C:InetPubwwwrootPKIdata
New-Item -ItemType Directory -Path C:InetPubwwwroot -Name PKIdata -Force
New-SmbShare -Path C:inetpubwwwrootPKIdata -Name PKI -FullAccess everyone
После этого нужно выдать права NTFS на запись в эту папку для группы Cert Publishers.
- Создание веб-сайта
Теперь нам необходимо создать отдельный веб-сайт с именем “CDP” и хост-именем “cdp.contoso.com”:
New-Website -Name CDP -HostHeader cdp.contoso.com -PhysicalPath C:inetpubwwwrootPKIdata
New-WebVirtualDirectory -Site cdp -Name pki -PhysicalPath C:inetpubwwwrootPKIdata
- Включение поддержки Delta CRL
В нашем сценарии издающий ЦС будет публиковать Delta CRL, которые содержат символ плюс «+» в имени файла (например, contoso-pica+.crl). По умолчанию, IIS будет расценивать этот символ в запросе как метасимвол и не позволит клиентам скачать список отзыва. Для этого необходимо включить двойной эскейпинг в настройках IIS, чтобы расценивать знак плюса в запросе как литерал:
Import-Module -Name WebAdministration
Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter /system.webServer/security/requestFiltering -name allowdoubleescaping -Value 'true'
Установка корневого ЦС
Фактическая установка ЦС будет включать в себя несколько этапов:
- Подготовка предустановочных конфигурационных файлов (CAPolicy.inf);
- Установка компонента ЦС;
- Выполнение постустановочной конфигурации;
- Проверка установки.
Перед установкой корневого ЦС, необходимо ещё раз вернуться к конфигурационным таблицам:
Название параметра | Значение параметра |
---|---|
Сервер ЦС | |
Класс ЦС | Standalone CA |
Тип ЦС | Root CA |
Сертификат | |
Имя сертификата | Contoso Lab Root Certification authority |
Дополнительный суффикс | OU=Division Of IT, O=Contoso Pharmaceuticals, C=US |
Провайдер ключа | RSA#Microsoft Software Key Storage Provider |
Длина ключа | 4096 бит |
Алгоритм подписи | SHA256 |
Срок действия | 15 лет |
В таблице я выделил только те параметры, которые задаются до и в процессе установки. Остальные параметры будут настраиваться после установки.
Предварительная конфигурация
Предварительные конфигурационные файлы необходимы для ряда настроек, которые невозможно задать во время установки компонента (ни при помощи графического интерфейса, ни при помощи командной строки или PowerShell). К ним обычно относятся настройки расширений сертификата ЦС. Например, для настройки расширения сертификата Certificate Policies, необходимо использовать предварительный конфигурационный файл, в котором настраиваются параметры расширения. Для Microsoft ADCS таким файлом является файл CAPolicy.inf, который должен быть расположен по следующему пути: %windir%CAPolicy.inf. С синтаксисом этого файла можно ознакомиться в следующей статье: How CA Certificates Work. Поскольку никаких специфичных или нестандартных настроек в сертификате корневого ЦС мы делать не будем, поэтому и предварительный конфигурационный файл сейчас нам не потребуется.
Установка компонента ЦС
Прежде всего необходимо добавить установочные компоненты для AD CS:
Install-WindowsFeature AD-Certificate, ADCS-Cert-Authority -IncludeManagementTools
После этого сверьтесь с предыдущей таблицей, чтобы определить параметры установки. Исходя из данных таблицы, зададим параметры для командлета Install-AdcsCertificationAuthority:
Install-AdcsCertificationAuthority -CACommonName "Contoso Lab Root Certification Authority" `
-CADistinguishedNameSuffix "OU=Division Of IT, O=Contoso Pharmaceuticals, C=US" `
-CAType StandaloneRootCA `
-CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
-KeyLength 4096 `
-HashAlgorithmName SHA256 `
-ValidityPeriod "years" `
-ValidityPeriodUnits 15 `
-DatabaseDirectory $(Join-Path $env:SystemRoot "System32CertLog")
Итоговая настройка
После установки компонента ЦС необходимо настроить рабочие параметры ЦС. Рассмотрим ещё раз элементы, которые нам необходимо настроить:
Название параметра | Значение параметра |
---|---|
Сервер ЦС | |
Срок действия издаваемых сертификатов | 15 лет |
Точки публикации CRT | 1) По-умолчанию 2) C:CertDatacontoso-rca< CertificateName >.crt3) IIS:InetPubPKIdatacontoso-rca< CertificateName >.crt* |
Точки распространения CRT | 1) cdp.contoso.com/pki/contoso-rca<CertificateName >.crt |
Точки публикации CRL | 1) По-умолчанию 2) C:CertDatacontoso-rca< CRLNameSuffix >.crt3) IIS:InetPubPKIdatacontoso-rca< CRLNameSuffix >.crt* |
Точки распространения CRL | 1) cdp.contoso.com/pki/contoso-rca<CRLNameSuffix >.crt |
Сертификат | |
Состав CRL | Base CRL |
Base CRL | |
Тип | Base CRL |
Срок действия | 6 месяцев |
Расширение срока действия | 1 месяц |
Алгоритм подписи | SHA256 |
Публикация в AD | Нет |
* — копируется на сервер IIS
Скрипт настройки
Для конфигурирования настроек ЦС мы будем использовать BATCH скрипт с использованием утилиты certutil.exe:
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Root CA post-installation script ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: все комментарии помечены знаком двойного двоеточия (::)
:: записываем пути для публикации и распространения сертификатов ЦС и списков отзыва
:: в отдельные переменные
SET CrlLocal=C:CertDatacontoso-rca%%8.crl
SET CDP=http://cdp.contoso.com/pki/contoso-rca%%8.crl
SET AIA=http://cdp.contoso.com/pki/contoso-rca%%4.crt
:: Создаём папку в корне системного диска, куда будут записываться файлы ЦС. Эта папка
:: создаётся для удобства, чтобы не искать папку CertEnroll в глубине папки Windows.
md C:CertData
:: Настраиваем пути публикации и распространения для сертификатов ЦС и списков отзыва.
certutil -setreg CACRLPublicationURLs "1:%windir%system32CertSrvCertEnroll%%3%%8.crln1:%CrlLocal%n2:%CDP%"
certutil -setreg CACACertPublicationURLs "1:%windir%system32CertSrvCertEnroll%%1_%%3%%4.crtn2:%AIA%"
:: Поскольку мы не можем указывать пути публикации для файла сертификата, мы
:: вручную переименовываем его в необходимый формат и копируем в папку CertData
ren %windir%system32CertSrvCertEnroll*.crt contoso-rca.crt
copy %windir%system32CertSrvCertEnrollcontoso-rca.crt C:CertData
:: Задаём срок действия издаваемых сертификатов
certutil -setreg CAValidityPeriodUnits 15
certutil -setreg CAValidityPeriod "Years"
:: Задаём время жизни списков отзыва согласно нашей конфигурации
certutil -setreg CACRLPeriodUnits 180
certutil -setreg CACRLPeriod "Days"
certutil -setreg CACRLOverlapPeriod "Months"
certutil -setreg CACRLOverlapUnits 1
:: Отключаем дифференциальные списки отзыва (или Delta CRL)
certutil -setreg CACRLDeltaPeriodUnits 0
:: Отключаем генерацию кросс-сертификатов
certutil -setreg caCRLFlags +CRLF_DISABLE_ROOT_CROSS_CERTS
:: Конфигурируем ЦС для включения истёкших отозванных сертификатов в списки отзыва
certutil –setreg caCRLFlags +CRLF_PUBLISH_EXPIRED_CERT_CRLS
:: Включаем полный аудит событий на ЦС**
certutil -setreg CAAuditFilter 127
:: если версия ОС ниже, чем Windows Server 2016 необходимо задать алгоритм подписи.
:: Windows Server 2016 по умолчанию использует SHA256.
Certutil -setreg cacspCNGHashAlgorithm SHA256
:: Перезапускаем службу ЦС для применения изменений.
net stop certsvc && net start certsvc
:: Публикуем списки отзыва.
certutil -CRL
Ряд команд нуждается в более развёрнутом пояснении. Команды с настройкой расширений CRL Distribution Points и Authority Information Access имеют специфический синтаксис. Во-первых, пути публикации и распространения указываются в одну строку и разделяются символом новой строки «n». Каждый путь начинается с числа и отделяется от самого пути символом двоеточия. Это число в начале пути указывает битовую маску флагов публикации для конкретного пути. Значение каждого бита для расширений CDP и AIA приведено в следующей таблице:
Название галочки в MMC | Числовое значение | Название галочки в MMC | Числовое значение |
---|---|---|---|
Publish CRLs to this location. | 1 | Include in the AIA extension of issued certificates. |
2 |
Include in the CDP extension of issued certificates. | 2 | Include in the Online Certificate Status. Protocol (OCSP) extension. | 32 |
Include in CRLs. Clients use this to find Delta CRL locations. | 4 | ||
Include in all CRLs. Specifies where to publish in AD DS when publishing manually. | 8 | ||
Publish Delta CRLs to this location. | 64 | ||
Include in the IDP extension of issued CRLs. | 128 |
Если взять путь для CDP: 1:%windir%system32CertSrvCertEnroll%%3%%8.crl, то цифра 1 в начале строки говорит о том, что это путь физического размещения файла (Publich CRLs to this location). Другие опции здесь не используются. Для включения пути, который будет публиковаться в издаваемых сертификатах, мы будем использовать опцию «Include in the CDP extension of issued certificates» с числовым значением 2. Такой же принцип применяется и для остальных путей.
В каждом пути включены переменные с двойным знаком процента «%%». Это переменные, которые ЦС при формировании пути будет автоматически заполнять исходя из типа переменной.
Первый знак процента используется как эскейп-символ, чтобы процессор командной строки воспринял следующий знак процента как литерал. Дело в том, что знак процента в командном процессоре CMD является служебным символом. Сервер ЦС так же использует знак процента для указания, что это переменная. Для исключения конфликта в командном процессоре используется последовательность из двух знаков процента.
Следующая таблица содержит описание всех доступных переменных и их краткое описание:
Переменная в редакторе расширений CDP и AIA | Переменная в скрипте | Где используется | Значение |
---|---|---|---|
<ServerDNSName > |
%1 | CDP/AIA | Полное ДНС имя сервера ЦС |
<ServerShortName > |
%2 | CDP/AIA | Короткое (NetBIOS) имя сервера ЦС |
<CaName > |
%3 | CDP/AIA | Имя ЦС (атрибут CN в сертификате) |
<CertificateName > |
%4 | AIA | Индекс сертификата ЦС. Используется только при обновлении сертификата ЦС. |
<ConfigurationContainer > |
%6 | CDP/AIA | Путь к configuration naming context в Active Directory |
<CATruncatedName > |
%7 | CDP/AIA | Укороченное (санитизированное) имя сертификата ЦС. В общем случае будет совпадать с полным именем ЦС |
<CRLNameSuffix > |
%8 | CDP | Индекс ключа ЦС, которым был подписан данный CRL. Используется при обновлении ключевой пары ЦС. |
<DeltaCRLAllowed > |
%9 | CDP | Добавляет суффикс для Delta CRL (знак «+»). |
<CDPObjectClass > |
%10 | CDP | Класс объекта в Active Directory |
<CAObjectClass > |
%11 | CDP/AIA | Класс объекта в Active Directory |
В нашем конкретном случае будут использоваться только две переменные: <CertificateName> и <CRLNameSuffix>. Для исходного сертификата ЦС эти переменные пустые. При обновлении сертификата ЦС, переменная будет заменяться на «(index)», где index — номер сертификата ЦС. Индексирование начинается с нуля. Например, имя файла для последующего сертификата ЦС будет иметь вид: contoso-rca(1).crt. И так далее. То же самое касается и переменной , только здесь будет указываться индекс ключевой пары ЦС.
Отдельного внимания заслуживает команда, которая включает аудит операций на сервере ЦС, которые регистрируются в системном журнале Security.evtx. К ним относятся все основные операции: запуск/остановка службы, отправление запроса, выпуск или отклонение сертификата, выпуск списка отзыва. Эту строчку можно найти практически в каждом постустановочном скрипте для ЦС, которые можно найти в похожих статьях в интернете. И практически никто не утруждает себя в подробном объяснении механизма его работы, просто копируют из статьи в статью.
Особенность ведения аудита ЦС заключается в том, что настройка флагов аудита на ЦС является необходимым, но не достаточным условием. Механизм аудита основан на регистрации событий в журнале Security.evtx, который, в свою очередь зависит от настройки политики Audit Object Access в групповых политиках. Т.е. без настройки групповых политик никакого аудита не будет.
Опытные администраторы знают к чему приводит включение Audit Object Access — к лавинному созданию записей в журнале от других компонентов ОС. Например, аудит доступа файловой системы, реестра, других установленных ролей и т.д. В результате, журнал может буквально за день-два заполниться до отказа. Поэтому для эффективного использования аудита необходимы меры по фильтрации ненужных событий, например, при помощи функции подписки на интересующие события. Нет смысла в аудите, если его никто не может прочитать и эффективно проанализировать. Но эта тема уже выходит за рамки этой статьи.
Прочие настройки
После того как корневой ЦС установлен и сконфигурирован, убедитесь, что всё прошло без ошибок:
- Откройте оснастку Certification Authorities MMC (certsrv.msc), убедитесь, что служба запущена;
- Выберите свойства узла ЦС и проверьте поля сертификата, что они соответствуют ожидаемым значениям;
- Найдите в корне системного диска папку CertData и убедитесь, что там находится два файла: сертификат и список отзыва. Убедитесь, что поля списка отзыва соответствуют ожидаемым значениям.
Если всё хорошо, тогда скопируйте содержимое папки C:CertData на сервер IIS в папку PKIData. Сертификат корневого ЦС уже можно импортировать на все устройства, которые будут использовать нашу PKI.
Для импорта сертификата на доменные клиенты, достаточно загрузить его в Active Directory и после обновления групповых политик на клиентах, сертификат будет установлен в локальные хранилища сертификатов во всём лесу. Для публикации сертификата в AD необходимо выполнить следующую команду:
Certutil -f -dspublish pathcontoso-rca.crt RootCA
Для установки сертификата на клиентах в рабочих группах и мобильные устройства необходимо воспользоваться другими инструментами, которые есть в вашем распоряжении. Например, System Center Configuration Manager или Mobile Device Management. Если подходящих инструментов нет, можно копировать и устанавливать сертификат на компьютеры при помощи утилиты certutil.exe. Для установки сертификата в локальное хранилище сертификатов выполните следующую команду:
Certutil -f -addstore Root pathcontoso-rca.crt
Установка издающего ЦС
Как и в случае с корневым ЦС, установка издающего ЦС включает в себя четыре этапа:
- Подготовка предустановочных конфигурационных файлов (CAPolicy.inf);
- Установка компонента ЦС;
- Выполнение постустановочной конфигурации;
- Проверка установки и конфигурации.
Предустановочная конфигурация
Если для корневого ЦС предустановочный конфигурационный файл нам не требовался, то для издающего ЦС он понадобится. В нём мы настроим расширения Certificate Policies и Basic Constraints для сертификата ЦС. Если с политиками всё понятно, то в расширении Basic Constraints мы запретим выдачу сертификатов другим ЦС с издающего ЦС, поскольку у нас двухуровневая иерархия и добавление новых уровней только усложняет нашу структуру и увеличивает время, затрачиваемое на проверку сертификатов клиентами. Также отключим автоматическую загрузку шаблонов из Active Directory в список выдаваемых шаблонов. По умолчанию, сервер ЦС загружает на выдачу некоторый набор шаблонов сертификатов. Это вредно по двум причинам:
- Контроллеры домена практически мгновенно обнаруживают появление ЦС в лесу и даже при отключённой политике автоматической выдачи сами запрашивают себе сертификаты.
- Администраторы сами должны определять какие шаблоны будут использовать в организации.
Поэтому мы сконфигурируем ЦС так, что список шаблонов к выдаче будет пустым. Это возможно сделать только через CAPolicy.inf. В нашем случае он будет иметь следующее содержимое:
; заголовок INI файла
[Version]
Signature= "$Windows NT$"
; указываем список политик, которые будут включены в сертификат ЦС. В нашем
; случае будет одна политика под названием AllIssuancePolicies.
[PolicyStatementExtension]
Policies = AllIssuancePolicy
; конфигурируем детали самой политики. Ссылку на документ Certificate Practice
; Statement (CPS) и объектный идентификатор политики
[AllIssuancePolicy]
URL = http://cdp.contoso.com/pki/contoso-cps.html
OID = 2.5.29.32.0
[BasicConstraintsExtension]
IsCA = True
PathLegth = 0
IsCritical = True
; секция прочих настроек ЦС
[certsrv_server]
; отключаем автоматическую загрузку шаблонов сертификатов для выдачи
LoadDefaultTemplates = 0
Файл с именем CAPolicy.inf необходимо скопировать в системную папку Windows до установки ЦС.
Установка компонента ЦС
Прежде всего необходимо добавить установочные компоненты для AD CS:
Install-WindowsFeature AD-Certificate, ADCS-Cert-Authority -IncludeManagementTools
После этого посмотрим на установочную таблицу, чтобы определить параметры установки:
Название параметра | Значение параметра |
---|---|
Сервер ЦС | |
Класс ЦС | Enterprise CA |
Тип ЦС | Subordinate CA |
Автоматическая загрузка шаблонов | Нет |
Сертификат | |
Имя сертификата | Contoso Lab Issuing Certification authority |
Дополнительный суффикс | OU=Division Of IT, O=Contoso Pharmaceuticals, C=US |
Провайдер ключа | RSA#Microsoft Software Key Storage Provider |
Длина ключа | 4096 бит |
Алгоритм подписи | SHA256 |
Срок действия | 15 лет (определяется вышестоящим ЦС) |
Политики выдачи | 1) Имя: All Issuance Policies OID=2.5.29.32.0 URL=http://cdp.contoso.com/pki/contoso-cps.html |
Basic Constraints | isCA=True (тип сертификата — сертификат ЦС) PathLength=0 (запрещается создание других промежуточных ЦС под текущим ЦС). |
В таблице я выделил только те параметры, которые задаются в процессе установки. Остальные параметры будут настраиваться после установки. Исходя из этих данных сформируем параметры для командлета Install-AdcsCertificationAuthority:
Install-AdcsCertificationAuthority -CACommonName "Contoso Lab Issuing Certification authority" `
-CADistinguishedNameSuffix "OU=Division Of IT, O=Contoso Pharmaceuticals, C=US" `
-CAType EnterpriseSubordinateCa `
-CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
-KeyLength 4096 `
-HashAlgorithmName SHA256
После выполнения этой команды будет выведено сообщение о том, что установка ЦС не завершена и для её завершения необходимо отправить сгенерированный запрос (находится в корне системного диска) на вышестоящий ЦС и получить подписанный сертификат. Поэтому находим файл с расширением «.req» в корне системного диска и копируем его на корневой ЦС и на корневом ЦС выполняем следующие команды:
# отправляем запрос на ЦС.
certreq -submit 'C:CA-01.contoso.com_Contoso Lab Issuing Certification authority.req'
# предыдущая команда выведет номер запроса. Укажите этот номер запроса в следующей команде
# в моём случае это номер 2
certutil -resubmit 2
# после выпуска сертификата сохраните его в файл. При этом укажите тот же самый номер
# запроса, который был указан после выполнения первой команды
certreq -retrieve 2 C:subca.crt
Полученный файл (subca.crt) необходимо скопировать обратно на издающий ЦС и завершить инсталляцию:
certutil -installcert c:subca.crt
net start certsvc
Мы устанавливаем на ЦС выписанный сертификат и запускаем службу сертификатов. После успешной установки можно запустить оснастку Certification Authorities MMC (certsrv.msc) и убедиться, что сертификат успешно установлен и ЦС в работающем состоянии. Теперь осталось дело за постустановочной конфигурацией.
Итоговая настройка
По аналогии с корневым ЦС, нам потребуется сконфигурировать ряд параметров на издающем ЦС. Для этого мы снова напишем BATCH скрипт с использованием утилиты certutil.exe. Но прежде всего посмотрим установочную таблицу и выясним параметры, которые нам необходимо настроить:
Аналогичная таблица составляется и для издающего ЦС.
Название параметра | Значение параметра |
---|---|
Сервер ЦС | |
Срок действия издаваемых сертификатов | Максимально: 5 лет (остальное контролируется шаблонами сертификатов) |
Публикация в AD (контейнеры) | AIA NTAuthCertificates |
Состав CRL | Base CRL Delta CRL |
Точки публикации CRT | 1) По-умолчанию 2) \IISPKIcontoso-pica< CertificateName >.crt |
Точки распространения CRT | 1) cdp.contoso.com/pki/contoso-pica<CertificateName >.crt |
Точки публикации CRL | 1) По-умолчанию 2) \IISPKIcontoso-pica< CRLNameSuffix ><DeltaCRLAllowed >.crl |
Точки распространения CRL | 1) cdp.contoso.com/pki/contoso-pica<CRLNameSuffix ><DeltaCRLAllowed >.crl |
Base CRL | |
Тип | Base CRL |
Срок действия | 1 неделя |
Расширение срока действия | По умолчанию |
Алгоритм подписи | SHA256 |
Публикация в AD | Нет |
Delta CRL | |
Тип | Delta CRL |
Срок действия | 1 день |
Расширение срока действия | По-умолчанию |
Алгоритм подписи | SHA256 |
Публикация в AD | Нет |
За основу мы возьмём скрипт с корневого ЦС и изменим только отдельные фрагменты:
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Issuing CA post-installation script ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: все комментарии помечены знаком двойного двоеточия (::)
:: записываем пути для публикации и распространения сертификатов ЦС и списков отзыва
:: в отдельные переменные
SET CrlLocal=\IISPKIcontoso-pica%%8%%9.crl
SET CDP=http://cdp.contoso.com/pki/contoso-pica%%8%%9.crl
SET AIA=http://cdp.contoso.com/pki/contoso-pica%%4.crt
:: Настраиваем пути публикации и распространения для сертификатов ЦС и списков отзыва.
certutil -setreg CACRLPublicationURLs "1:%windir%system32CertSrvCertEnroll%%3%%8%%9.crln65:%CrlLocal%n6:%CDP%"
certutil -setreg CACACertPublicationURLs "1:%windir%system32CertSrvCertEnroll%%1_%%3%%4.crtn2:%AIA%"
:: Поскольку мы не можем указывать пути публикации для файла сертификата, мы
:: вручную переименовываем его в необходимый формат и копируем в сетевую папку
ren %windir%system32CertSrvCertEnroll*.crt contoso-pica.crt
copy %windir%system32CertSrvCertEnrollcontoso-pica.crt \IISPKI
:: Задаём срок действия издаваемых сертификатов
certutil -setreg CAValidityPeriodUnits 5
certutil -setreg CAValidityPeriod "Years"
:: Задаём время жизни списков отзыва согласно нашей конфигурации
:: базовый CRL
certutil -setreg CACRLPeriodUnits 1
certutil -setreg CACRLPeriod "weeks"
:: Delta CRL
certutil -setreg CACRLDeltaPeriodUnits 1
certutil -setreg CACRLDeltaPeriod "days"
:: Включаем полный аудит событий на ЦС**
certutil -setreg CAAuditFilter 127
:: Включаем наследование расширения Certificate Policies в издаваемых сертификатах
certutil -setreg PolicyEnableRequestExtensionList +"2.5.29.32"
:: Включаем поддержку расширения OcspRevNoCheck, если планируется установка
:: сетевого ответчика (Online Responder или OCSP сервера)
certutil -v -setreg policyeditflags +EDITF_ENABLEOCSPREVNOCHECK
:: если версия ОС ниже, чем Windows Server 2016 необходимо задать алгоритм подписи.
:: Windows Server 2016 по умолчанию использует SHA256.
Certutil -setreg cacspCNGHashAlgorithm SHA256
:: Перезапускаем службу ЦС для применения изменений.
net stop certsvc && net start certsvc
:: Публикуем списки отзыва.
certutil -CRL
Заметим, что в путях CRLDistribution Points, изменены флаги публикации (добавлена публикация Delta CRL) и добавлена переменная %9 в имя файла для поддержки уникального имени для дельты.
Здесь мы больше не создаём папку в корне системного диска, а используем сетевую папку PKI на сервере IIS, куда напрямую копируем файл сертификата и публикуем списки отзыва.
Прочие настройки
После того как издающий ЦС установлен и сконфигурирован, убедитесь, что всё прошло без ошибок:
- Откройте оснастку Certification Authorities MMC (certsrv.msc), убедитесь, что служба запущена
- Выберите свойства узла ЦС и проверьте поля сертификата, что они соответствуют ожидаемым значениям.
- Откройте сетевую папку PKI (на сервере IIS) и убедитесь, что там есть два файла сертификата (корневого и издающего ЦС) и три списка отзыва (один для корневого, два для издающего ЦС). Убедитесь, что поля в сертификатах и списках отзыва соответствуют ожидаемым значениям.
Когда основные параметры проверены, необходимо убедиться в правильной связи иерархии ЦС и доступности всех внешних файлов для клиентов. Для этого на сервере ЦС (а лучше, на рабочей станции, где установлены средства удалённого администрирования ЦС) необходимо запустить оснастку Enterprise PKI Health (pkiview.msc). Оснастка автоматически построит текущую иерархию и проверит доступность всех путей для скачивания сертификатов ЦС и списков отзыва. Никаких ошибок быть не должно. Если есть ошибка, необходимо её точно идентифицировать и устранить. В случае успешной настройки оснастка будет выглядеть следующим образом для корневого ЦС:
И для издющего ЦС:
Если вся итоговая конфигурация соответствует ожидаемым значениям и оснастка Enterprise PKI Health не показывает ошибок, это может судить о том, что PKI установлена верно.
Рекомендации
После того, как все ЦС установлены, сконфигурированы и их работоспособность проверена, можно приступать к их эксплуатации. В этом разделе я дам несколько полезных рекомендаций, которых следует придерживаться, чтобы предостеречь себя от возможных потенциальных проблем во время эксплуатации PKI.
Шаблоны сертификатов
Наряду с установкой издающего ЦС, в Active Directory устанавливается набор уже готовых шаблонов сертификатов. Их можно просмотреть в оснастке Certificate Templates MMC (certtmpl.msc). Рекомендации по шаблонам сертификатов:
Использование готовых шаблонов сертификатов
Я рекомендую использовать их копии, даже если вы не планируете вносить в них изменения. Для создания копии шаблона выберите в списке подходящий шаблон, в контекстном меню выберите Duplicate Template и создайте его копию. Целесообразно в имя шаблона включить название компании, чтобы отличить предустановленный шаблон от вами созданного. Например, Contoso Web Server, Contoso Smart Card Logon. Это позволит сравнить настройки исходного и вами созданного шаблона в случае неработоспособности шаблона.
Версия шаблона
Начиная с Windows Server 2012, интерфейс создания шаблона несколько изменился. В самом начале появляется окно с выбором версии ОС на ЦС и предполагаемом клиенте:
Если у вас используются современные версии ОС (например, Windows 7 и выше), может появиться желание выставить настройки на максимум. Если вы не уверены, что ваше приложение совместимо с CNG (Cryptography Next Generation), следует использовать настройки, которые приведены на картинке. Если вы выставляете ОС сервера и клиента выше, чем Windows Server 2003/Windows XP, шаблон будет использовать криптографию несовместимую с этими приложениями. Например, большинство приложений, написанных на .NET, семейство продуктов System Center, службы федераций (AD FS) и т.д. не смогут использовать ключи таких сертификатов (но проверять смогут).
Успешно такие сертификаты смогут использовать приложения, которые используют не .NET, а нативные функции CryptoAPI. К таким приложениям можно отнести, например, IIS, Remote Desktop Services.
Поля Subject и Subject Alternative Names
Существует два метода заполнения поля Subject и расширения Subject Alternative Names: автоматический и ручной. Это настраивается в настройках шаблона сертификата, во вкладке Subject Name.
Если выбран второй пункт (как на картинке), ЦС игнорирует имя субъекта из запроса сертификата и заполняет эти поля из свойств учётной записи пользователя или устройства, которое запрашивает сертификат. В ряде случаев это не подходит (например, сертификаты для внутренних веб-сайтов) и имя субъекта заполняется из значения в запросе сертификата. Тогда переключатель необходимо выставить в верхнее положение. Дополнительно к этому, на вкладке Issuance Requirements обязательно надо выставить галочку «CA certificate manager approval».
Это необходимо затем, что имя для сертификата никак не проверяется. Если этот момент не контролировать, пользователь может запросить сертификаты на любое имя и скомпрометировать весь лес Active Directory. Вряд ли вы позволите рядовому пользователю получить сертификат на имя администратора. После требования одобрения запроса менеджером сертификатов на ЦС, каждый запрос с явным указанием субъекта сертификата будет попадать на ЦС в папку Pending Requests и не будет подписан, пока оператор ЦС не изучит его содержимое и не примет решение о выпуске. Т.е. каждый такой запрос необходимо вручную проверять на содержимое и убедиться, что в запросе указаны верные и допустимые имена. В противном случае запрос должен быть отклонён.
Права на шаблоны сертификатов
Шаблоны сертификатов в Active Directory хранятся в разделе configuration naming context, который реплицируется между всеми контроллерами домена в лесу. Поэтому для назначения прав на шаблоны сертификатов можно использовать только глобальные и универсальные группы. Избегайте назначения прав отдельным пользователям и устройствам.
Обновление сертификатов ЦС
Периодически необходимо обновлять сертификаты ЦС. Рассмотрим несколько аспектов, связанных с обновлением сертификатов ЦС.
Периодичность обновления сертификата ЦС
Это делается в следующих случаях:
- Срок жизни сертификата ЦС истекает;
- Ключ ЦС скомпрометирован;
- Необходимо изменить длину ключа или алгоритм подписи;
- Слишком большой список отзыва (больше нескольких мегабайт).
Первый вопрос, если всё идёт штатно, за какое время до истечения срока действия сертификата ЦС его нужно обновлять?
Сертификат издающего ЦС должен обновляться за максимальный срок действия издаваемых сертификатов. В нашем случае срок действия сертификата издающего ЦС 15 лет, а максимальный срок действия издаваемых сертификатов 5 лет (см. конфигурационную таблицу). Это означает, что сертификат издающего ЦС необходимо обновить через 10 лет. Если это время затянуть, то мы не сможем обеспечить необходимый срок действия для самого долгосрочного шаблона.
Порядок обновления ЦС
В нашей двухуровневой иерархии сертификаты корневого и издающего ЦС имеют одинаковый срок действия. Поэтому, когда вы принимаете решение об обновлении сертификата любого ЦС, необходимо обновлять их вместе. Первым обновляется сертификат корневого ЦС, затем сертификат издающего ЦС.
Генерация ключей при обновлении сертификатов ЦС
При обновлении сертификатов ЦС вам предлагается две опции: использовать существующую ключевую пару или сгенерировать новую:
В диалоговом окне обновления ключевой пары приведены рекомендации Microsoft по выбору ключевой пары. Однако, практика показывает, что эти рекомендации устарели. Следует всегда генерировать новую ключевую пару. При использовании нескольких сертификатов ЦС клиентский модуль построения цепочки сертификатов иногда может ошибиться и выбрать неправильный сертификат. В базе знаний Microsoft отмечены такие проблемы. Примеры статей:
- Certificate validation fails when a certificate has multiple trusted certification paths to root CAs.
- «0x80092013, CRYPT_E_REVOCATION_OFFLINEA» error message when you try to verify a certificate that has multiple chains in Windows Server 2008 or in Windows Vista.
При генерации новой ключевой пары для каждого сертификата будет гарантирован только один путь к корневому сертификату и модуль построения цепочек сертификатов уже не ошибётся.
Резервное копирование
Вопросы резервного копирования и восстановления после отказа являются отдельной темой. Здесь я лишь отмечу основные моменты, которые следует учесть при планировании стратегии резервного копирования.
Microsoft Active Directory Certificate Services предоставляет инструменты для резервного копирования компонентов ЦС:
- Оснастка Certification Authority MMC (certsrv.msc);
- Утилита certutil.exe с параметром -backup.
С ними можно сделать резервную копию для ключевой пары ЦС и базы данных. Однако эти инструменты не позволяют делать резервную копию настроек ЦС. Эти операции необходимо выполнять вручную. Все настройки ЦС находятся в реестре по следующему пути:
HKLMSystemCurrentControlSetServicesCertSvc
При резервном копировании всегда экспортируйте данную ветку реестра. При восстановлении ЦС сохранённый REG файл импортируется обратно в реестр после установки роли ЦС.
Полный список элементов ЦС, который подлежит обязательному резервному копированию выглядит так:
- Ключи и сертификаты ЦС;
- База данных ЦС;
- Настройки ЦС из реестра;
- Предустановочный конфигурационный файл;
- Установочные и конфигурационные скрипты.
Этот список не зависит от принятой в вашей компании стратегии резервного копирования, он всегда должен быть включён в список резервных копий.
Об авторе
Вадим Поданс — специалист в области автоматизации PowerShell и Public Key Infrastructure, Microsoft MVP: Cloud and Datacenter Management с 2009 года и автор модуля PowerShell PKI. На протяжении 9 лет в своём блоге освещает различные вопросы эксплуатации и автоматизации PKI на предприятии. Статьи Вадима о PKI и PowerShell можно найти на его сайте.
Перед каждым администратором рано или поздно возникает необходимость обеспечить безопасный обмен информации через интернет, внешние и внутренние сети, а также проверку подлинности каждой из сторон, участвующих в обмене информацией. На помощь здесь приходит инфраструктура открытых ключей (PKI) и службы сертификации Windows.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Инфраструктура открытых ключей позволяет использовать цифровые сертификаты для подтверждения подлинности владельца и позволяет надежно и эффективно защищать трафик передаваемый по открытым сетям связи, а также осуществлять с их помощью аутентификацию пользователей. Основой инфраструктуры открытых ключей является центр сертификации, который осуществляет выдачу и отзыв сертификатов, а также обеспечивает проверку их подлинности.
Для чего это может быть нужно на практике? Цифровые сертификаты позволяют использовать шифрование на уровне приложений (SSL/TLS) для защиты веб-страниц, электронной почты, служб терминалов и т.п., регистрацию в домене при помощи смарт-карт, аутентификацию пользователей виртуальных частных сетей (VPN), шифрование данных на жестком диске (EFS), а также в ряде случаев обойтись без использования паролей.
Для создания центра сертификации нам понадобится сервер, работающий под управлением Windows Server, который может быть как выделенным, так и совмещать роль центра сертификации с другими ролями. Однако следует помнить, что после развертывания центра сертификации вы не сможете поменять имя компьютера и его принадлежность к домену (рабочей группе).
Центр сертификации (ЦС) может быть двух типов: ЦС предприятия и изолированный (автономный) ЦС, рассмотрим их отличительные особенности:
ЦС предприятия
- Требует наличия ActiveDirectory
- Автоматическое подтверждение сертификатов
- Автоматическое развертывание сертификатов
- Возможность запроса сертификатов через Web-интерфейс, мастер запросов и автоматическое развертывание
Изолированный (автономный) ЦС
- Не требует наличия ActiveDirectory
- Ручное подтверждение сертификатов
- Отсутствие возможности автоматического развертывания
- Запрос сертификатов только через Web-интерфейс
Методика развертывания ЦС для Windows Server 2003 и Windows Server 2008 несколько различаются, поэтому мы решили рассмотреть их в отдельности.
Windows Server 2003
Для возможности использования Web-интерфейса для выдачи сертификатов нам понадобится установленный web-сервер IIS. Установим его через диспетчер сервера: Пуск — Управление данным сервером — Добавить или удалить роль.
В списке ролей выбираем роль Сервера приложений. В следующем окне устанавливаем галочку Включить ASP.NET, если IIS уже установлен данный шаг можно пропустить.
После установки IIS приступим к развертыванию Центра сертификации, это делается через оснастку Установка и удаление программ — Установка компонентов Windows, где выбираем Службы сертификации.
Следующим шагом выберите тип ЦС и его подчиненность. Так как в нашем случае сеть не имеет доменной структуры, то ЦС Предприятия недоступен для выбора. Поскольку это первый (и пока единственный ЦС) следует выбрать корневой сервер, подчиненный тип следует выбирать для развертывания следующих ЦС, например для филиалов.
Далее вводим имя ЦС (должно совпадать с именем сервера) и пути размещения файлов. В процессе установки программа предложит перезапустить IIS и, если не была включена поддержка страниц ASP.NET, предложит ее включить, с чем следует согласиться.
Windows Server 2008 R2
В Windows Server 2008 (2008 R2) все настройки консолидированы в одном месте, что делает установку ЦС более простой и удобной. Выбираем Диспетчер сервера — Роли — Добавить роли, в списке ролей выбираем Службы сертификации Active Directory.
В следующем окне обязательно добавляем компонент Служба регистрации в центре сертификации через интернет. При этом будут автоматически определены необходимые службы ролей и компоненты (такие как IIS) и будет предложено их добавить.
Дальнейшая настройка аналогична Windows Server 2003. Вводим тип ЦС, его имя и место хранения файлов, подтверждаем выбор компонент и завершаем установку.
Проверка работы ЦС
Для первоначальной проверки работоспособности ЦС можете запустить оснастку Центр сертификации (Пуск — Администрирование — Центр Сертификации). Если все сделано правильно вы должны увидеть следующее окно:
Попробуем теперь получить сертификат для клиентского ПК. Запустим браузер, в адресной строке которого укажем адрес http://имя_сервера/certsrv, где имя_сервера — имя сервера ЦС. Вы попадете на главную страницу центра сертификации.
Прежде всего необходимо загрузить сертификат ЦС и поместить его в хранилище доверенных коренных центров сертификации. Если в вашей сети несколько ЦС следует загрузить и установить цепочку сертификатов. Для этого выбираем: Загрузка сертификата ЦС, цепочки сертификатов или CRL, затем Загрузка сертификата ЦС или Загрузка сертификата ЦС и сохраняем сертификат в любое удобное место.
Теперь перейдем к установке, для этого щелкнем правой кнопкой на файле сертификата и выберем Установить сертификат, откроется мастер импорта, в котором откажемся от автоматического выбора хранилища вручную выбрав Доверенные корневые центры сертификации, теперь данный ПК будет доверять всем сертификатам выданным данным ЦС.
Для получения клиентского сертификата снова откроем сайт ЦС и выберем Запрос сертификата — расширенный запрос сертификата — Создать и выдать запрос к этому ЦС. Заполняем форму запроса, в качестве имени указываем имя ПК или пользователя, в качестве типа сертификата указываем Сертификат проверки подлинности клиента и жмем кнопку Выдать.
При попытке создать запрос сертификата вы можете получить следующее предупреждение:
В этом случае можно добавить данный узел в зону Надежные узлы и установить низкий уровень безопасности для этой зоны. В Windows Server понадобится также разрешить загрузку неподписанных ActiveX.
Теперь на сервере откроем оснастку Центр сертификации и в разделе Запросы на ожидание найдем наш запрос и щелкнув на него правой кнопкой выберем Все задачи — Выдать.
Теперь вернемся на клиентский ПК и еще раз откроем сайт ЦС. На этот раз выберем Просмотр состояния ожидаемого запроса сертификата, вы увидите свой запрос, щелкнув на которой вы попадете на страницу Сертификат выдан и сможете сразу его установить.
Если все сделано правильно, то сертификат успешно установится в хранилище личных сертификатов.
По окончании проверки не забудьте удалить ненужные сертификаты с клиентского ПК и отозвать их в центре сертификации на сервере.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Следующий этап внедрения инфраструктуры открытых ключей – установка корневого удостоверяющего центра. Как правило это виртуальная машина, при этом ее не следует подключать к сети, поскольку это может создать потенциальный риск компрометации. Весь информационный обмен: перенос сертификатов и списков отзыва, передача запросов к центру сертификации и выданных сертификатов с него осуществляется с помощью внешнего защищенного носителя, доступ к которому ограничен доверенным кругом лиц.
Процедура самой установки службы сертификатов не отличается от установки любой другой роли Windows Server 2016, и знакома системному администратору. Добавляется новая роль – Active Directory Certificate Service. Перед установкой следует разместить файл capolicy.inf [1], содержимое которого мы обсуждали в предыдущей статье [3] в папке systemroot. См. рис. 1.
рис. 1.
Это позволит нам выполнить начальную конфигурацию сервера сертификатов. В процессе установки сервиса, вернее будет сказать послеустановочной настройки см. рис. 2., потребуется задать учетную запись, от имени которой будет работать служба, тип развертывания – «Stand Alone CA», роль удостоверяющего центра – «RootCA».
рис. 2.
Также будет необходимо создать новый частный ключ, указать требуемый криптоалгоритм и длину ключа, алгоритм хеширования, срок жизни сертификата. После этого может сложится впечатление, что настройка завершена, однако это не так. Дело в том, что многие параметры работы сервера сертификатов останутся в состоянии «по-умолчанию», что приведет к неверной работе. Так, например, точки публикации сертификатов (AIA) см. рис. 3 и списков отзыва (CDP) см. рис. 4, порядок их опроса не будут соответствовать нашим потребностям, параметры логирования не будут заданы вовсе.
рис. 3.
рис. 4.
AIA расшифровывается как Authority Information Access и определяет место хранение актуальных сертификатов нашего сервера. CDP – дает нам возможность определить место хранения списков отзывов, подписанных нашим сервером сертификатов. Оба эти расширения содержаться во всех выданных удостоверяющим центром сертификатах и, соответственно, должно быть доступны всем потребителям.
Получается, клиенты должны обладать возможностью проверять цепочку сертификатов и список отзыва, обращаясь по тем, которые указаны в сертификате, то есть определены в AIA и CDP расширениях при настройке. Если это сделать не получится, то сервисы, ради которых внедрялась инфраструктура открытых ключей будет неработоспособна. Например, вы хотели использовать сертификаты для аутентификации с помощью смарт карт, но пользователь не смог проверить список отзыва по заданному вами пути, в этом случае войти по смарт карте не выйдет.
Изменение этих настроек может быть выполнено разными способами. Может быть использован графический интерфейс (GUI), утилита certutil [4], с помощью которой можно полностью выполнять любые задачи из командной строки, наконец воспользоваться командлетами powershell.
Certutil.exe – программа командной строки, которая устанавливается как часть служб сертификации. Используется для сбора информации о конфигурации удостоверяющего центра, настройки служб сервиса, резервного копирования и восстановления компонентов ЦС и проверки сертификатов, пар ключей и цепочек сертификатов.
Администратор может вносить изменения в AIA и CDP расширения, однако на уже выданные сертификаты это никак не повлияет, они содержат предыдущие значения, соответственно, надо учитывать этот факт, и не лишать обладателей ранее выданных сертификатов возможности работы. Порядок строк в CDP, определяет последовательность проверки списка отзыва сертификатов. Получается, что, при наличии внешних клиентов, надо учесть, что проверка, скажем LDAP пути, который по-умолчанию стоит раньше в списке, будет для них просто невозможна. То есть будут возникать задержки [5] пока получится добраться до «рабочего» варианта. В этой ситуации, будет целесообразно, первым разместить HTTP путь. Это же будет относится и к не Windows клиентам, которые не будут использовать LDAP для поиска сертификатов и списков отзыва.
Вообще, наиболее часто используемым будет именно HTTP вариант, поскольку он универсален и подходит любому типу клиента независимо от его членства в домене AD DS и типа.
Стоит отметить, что у нас нет возможности частичной корректировки уже внесенной строки. Также невозможно изменить порядок следования строк. И, поскольку указанный по-умолчанию вариант в большинстве случаем не подходит, то ничего не остается, как только удалить эти строки полностью и внести новые значения, соответствующие требованиям. На этом этапе должны быть уже определены места хранения сертификатов и списков отзыва и подготовлен веб сервер, что уже обсуждалось в предыдущей статье [3].
Еще один важный момент – как выполнить эти настройки? Конечно, это может быть сделано «вручную» с помощью графического интерфейса, однако при таком способе вероятность ошибок из-за невнимательности возрастает, поэтому лучше будет воспользоваться заранее подготовленным и отлаженным скриптом, который и выполнит все необходимые модификации реестра и настроит CA.
Для настройки параметров CDP будем применять утилиту certutil и воспользуемся следующей командой:
CertUtil [Options] -setreg [{ca|restore|policy|exit|template|enroll|chain|PolicyServers}[ProgId]]RegistryValueName Value+ ,
с помощью, которой и назначим точки публикации CRL.
Определимся с тем, каких результатов нам требуется добиться.
Список отзыва сертификатов публикуется на самом сервере сертификатов в виде обычного файла с расширением CRL. Стало быть, надо указать папку, где будет этот файл храниться. Например, тот вариант, который предлагается по-умолчанию:
C:Windowssystem32CertSrvCertEnroll.
Он нам вполне подойдет. Следует понимать, что клиенты его получить не смогут, поскольку наш корневой сервер сертификатов для них недоступен. RootCA отключен от сети, да и вообще выключен. Значит файл его списка отзыва должен храниться где-то еще. То есть на сервере распространения – это наш веб сервер, который мы раньше установили. Нам придется его туда скопировать. Мы вернемся к вопросу переноса данных чуть позже в следующих статьях этого цикла.
Пусть все настроено и наши клиенты уже работают с сертификатами, например, пытаются подключиться по SSL.
Получив сертификат веб сервера при попытке установить соединение с ним, проверяется не отозван ли сам сертификат и сертификаты выдавшего центра сертификации, и всех удостоверяющих центров до корневого включительно и действительна ли цепочка сертификатов не устарели ли они.
Значит список отзыва RootCA должен быть включен в выданные им сертификаты.
Какие пути надо включить? Первым будет HTTP, а вторым LDAP путь для клиентов AD. Вероятней всего, до проверки LDAP дело не дойдет, но мы все-таки дополнительно внесем и этот путь.
Включим публикацию этих путей в сертификате. То есть получив сертификат, клиент точно будет знать куда идти для проверки. С дополнительными параметрами в этой команде можно познакомиться в статье [5].
certutil -setreg CACRLPublicationURLs “1:C:Windowssystem32CertSrvCertEnroll%3%8.crln2:http://pki.nwtraders.msft/PKI/%3%8.crln10:ldap:///CN=%7%8,CN=%2,CN=CDP,CN=Public Key Services,CN=Services,%6%10”
Сам сертификат УЦ тоже должен где-то храниться, мы используем путь по-умолчанию: C:Windowssystem32CertSrvCertEnroll.
Теперь то, что касается проверки цепочки доверия сертификатов, клиенты будут проверять сами сертификаты, то есть надо включить информацию о их месте нахождения. Точно также мы воспользуемся http и ldap путями.
Настройку AIA выполним таким образом:
certutil -setreg CACACertPublicationURLs “1:C:Windowssystem32CertSrvCertEnroll%3%4.crtn2:http://pki.nwtraders.msft/PKI//%3%4.crtn2:ldap:///CN=%7,CN=AIA,CN=Public Key Services,CN=Services,%6%11”
Для настройки срока действия сертификата и периодичности публикации CRL, если нам требуется изменить уже внесенные с помощью capolicy.inf значения, с помощью все той же утилиты certutil делается нижеследующее:
certutil -setreg CAValidityPeriodUnits 20
certutil -setreg CAValidityPeriod “Years”
certutil -setreg CACRLPeriodUnits 26
certutil -setreg CACRLPeriod “Weeks”
certutil -setreg CACRLOverlapUnits 2
certutil -setreg CACRLOverlapPeriod “Weeks”
certutil -setreg CACRLDeltaPeriodUnits 0
certutil -setreg CACRLDeltaPeriod “Hours”
Последовательно здесь настраиваются:
- Период действия сертификата центра сертификации
- Единицы измерения для ValidityPeriodUnits
- Периодичность выпуска списков CRL и Delta CRL, а также срок продленного действия списков CRL
Последнее, что осталось сделать – настроить аудит.
certutil -setreg CAAuditFilter 127
Наконец, для определения значения переменной %6 -<ConfigurationContainer> выполните следующую команду:
certutil -setreg caDSConfigDN “CN=Configuration,DC=nwtraders,DC= msft”
Вот теперь мы можем считать, что корневой центр сертификации развернут.
источник
Рубрика: Администрирование / ИТ-инфраструктура |
Мой мир Вконтакте Одноклассники Google+ |
СТЕПАН МОСКАЛЕВ, инженер ИТ-систем, MCSE, MCSE:S, MCSE:M, MCITP EA, MCITP EMA, HP AIS, msv121@mail.ru
ЛЕОНИД ШАПИРО, архитектор ИТ-систем, MVP, MCT, MCSE, MCITP:EA, MCSE:S, MCSE:M, shapiro_leonid@yahoo.com
Инфраструктура открытых ключей
в Windows Server 2016. Часть 2. RootCA
Следующий этап внедрения инфраструктуры открытых ключей – установка корневого удостоверяющего центра. Как правило, это виртуальная машина, при этом ее не следует подключать к сети, поскольку это может создать потенциальный риск компрометации
Весь информационный обмен – перенос сертификатов и списков отзыва, передача запросов к центру сертификации и выданных сертификатов с него – осуществляется с помощью внешнего защищенного носителя, доступ к которому ограничен доверенным кругом лиц.
Процедура самой установки службы сертификатов не отличается от установки любой другой роли Windows Server 2016 и знакома системному администратору. Добавляется новая роль – Active Directory Certificate Service. Перед установкой следует разместить файл capolicy.inf [1], содержимое которого мы обсуждали в предыдущей статье [3], в папке systemroot (см. рис. 1).
Рисунок 1. Сохранение файла capolicy.inf
Это позволит нам выполнить начальную конфигурацию сервера сертификатов. В процессе установки сервиса, вернее будет сказать после установочной настройки (см. рис. 2), потребуется задать учетную запись, от имени которой будет работать служба, тип развертывания – Stand Alone CA, роль удостоверяющего центра – RootCA.
Рисунок 2. Завершение процесса настройки сервера сертификатов
Также будет необходимо создать новый частный ключ, указать требуемый криптоалгоритм и длину ключа, алгоритм хеширования, срок жизни сертификата. После этого может сложиться впечатление, что настройка завершена, однако это не так. Дело в том, что многие параметры работы сервера сертификатов останутся в состоянии «по умолчанию», что приведет к неверной работе. Так, например, точки публикации сертификатов (AIA) (см. рис. 3) и списков отзыва (CDP) (см. рис. 4), порядок их опроса не будут соответствовать нашим потребностям, параметры логирования не будут заданы вовсе.
Рисунок 3. Значение AIA по умолчанию
Рисунок 4. Значения CDP по умолчанию
AIA расшифровывается как Au-thority Information Access и определяет место хранения актуальных сертификатов нашего сервера. CDP дает нам возможность определить место хранения списков отзывов, подписанных нашим сервером сертификатов. Оба эти расширения содержатся во всех выданных удостоверяющим центром сертификатах и, соответственно, должны быть доступны всем потребителям.
Весь информационный обмен осуществляется с помощью внешнего защищенного носителя, с ограниченным доступом доверенных лиц
Получается, клиенты должны обладать возможностью проверять цепочку сертификатов и список отзыва, обращаясь по тем, которые указаны в сертификате, то есть определены в AIA и CDP-расширениях при настройке. Если это сделать не получится, то сервисы, ради которых внедрялась инфраструктура открытых ключей, будут неработоспособны. Например, вы хотели использовать сертификаты для аутентификации с помощью смарт-карт, но пользователь не смог проверить список отзыва по заданному вами пути, в этом случае войти по смарт-карте не получится.
Изменение этих настроек может быть выполнено разными способами. Могут быть использованы графический интерфейс (GUI), утилита certutil [4], с помощью которой можно полностью выполнять любые задачи из командной строки, наконец, воспользоваться командлетами powershell.
Certutil.exe – программа командной строки, которая устанавливается как часть служб сертификации. Используется для сбора информации о конфигурации удостоверяющего центра, настройки служб сервиса, резервного копирования и восстановления компонентов ЦС и проверки сертификатов, пар ключей и цепочек сертификатов.
Администратор может вносить изменения в AIA и CDP-расширения, однако на уже выданные сертификаты это никак не повлияет, они содержат предыдущие значения, соответственно, надо учитывать этот факт и не лишать обладателей ранее выданных сертификатов возможности работы. Порядок строк в CDP определяет последовательность проверки списка отзыва сертификатов. Получается, что при наличии внешних клиентов надо учесть, что проверка, скажем, LDAP-пути, который поумолчанию стоит раньше в списке, будет для них просто невозможна. То есть станут возникать задержки [5], пока получится добраться до «рабочего» варианта. В этой ситуации целесообразно первым разместить HTTP-путь. Это же будет относиться и к не Windows-клиентам, которые не станут использовать LDAP для поиска сертификатов и списков отзыва.
Администратор может вносить изменения в AIA и CDP-расширения, однако это никак не повлияет на уже выданные сертификаты, они содержат предыдущие значения
Вообще наиболее часто используемым будет именно HTTP-вариант, поскольку он универсален и подходит любому клиенту независимо от его членства в домене AD DS и типа.
Стоит отметить, что у нас нет возможности частичной корректировки уже внесенной строки. Также невозможно изменить порядок следования строк. И поскольку указанный по умолчанию вариант в большинстве случаев не подходит, то ничего не остается, как только удалить эти строки полностью и внести новые значения, соответствующие требованиям. На этом этапе должны быть уже определены места хранения сертификатов и списков отзыва и подготовлен веб-сервер, что уже обсуждалось в предыдущей статье [3].
Еще один важный момент: как выполнить эти настройки? Конечно, это может быть сделано «вручную» с помощью графического интерфейса, однако при таком способе вероятность ошибок из-за невнимательности возрастает, поэтому лучше воспользоваться заранее подготовленным и отлаженным скриптом, который и выполнит все необходимые модификации реестра и настроит CA.
Для настройки параметров CDP будем применять утилиту certutil и воспользуемся следующей командой:
CertUtil [Options] -setreg
[{ca|restore|policy|exit|template|enroll|chain|PolicyServers}[ProgId]] RegistryValueName Value+ []
с помощью, которой и назначим точки публикации CRL.
Определимся с тем, каких результатов нам надо добиться.
Список отзыва сертификатов публикуется на самом сервере сертификатов в виде обычного файла с расширением CRL. Стало быть, надо указать папку, где будет этот файл храниться. Например, тот вариант, который предлагается по умолчанию: C:Windowssystem32CertSrvCertEnroll.
Он нам вполне подойдет. Следует понимать, что клиенты его получить не смогут, поскольку наш корневой сервер сертификатов для них недоступен. RootCA отключен от сети, да и вообще выключен. Значит, файл его списка отзыва должен храниться где-то еще. То есть на сервере распространения – это наш веб-сервер, который мы раньше установили. Нам придется его туда скопировать. Мы вернемся к вопросу переноса данных чуть позже в следующих статьях этого цикла.
Клиенты будут проверять сами полученные сертификаты, то есть надо включить информацию об их месте нахождения
Пусть все настроено и наши клиенты уже работают с сертификатами, например пытаются подключиться по SSL.
После получения сертификата веб-сервера при попытке установить соединение с ним проверяется, не отозван ли сам сертификат и сертификаты выдавшего центра сертификации и всех удостоверяющих центров до корневого включительно и действительна ли цепочка сертификатов – не устарели ли они.
Значит, список отзыва RootCA должен быть включен в выданные им сертификаты.
Какие пути надо включить? Первым будет HTTP, а вторым – LDAP-путь для клиентов AD. Вероятнее всего, до проверки LDAP дело не дойдет, но мы все-таки дополнительно внесем и этот путь.
Включим публикацию этих путей в сертификат. То есть, получив сертификат, клиент точно будет знать, куда идти для проверки. С дополнительными параметрами в этой команде можно познакомиться в статье [5].
certutil -setreg CACRLPublicationURLs
"1:C:Windows system32CertSrvCertEnroll%3%8.crln2:http://pki.nwtraders.msft/PKI/%3%8.crln10:
ldap:///CN=%7%8,CN=%2,CN=CDP,CN=Public Key Services,CN=Services,%6%10"
Сам сертификат УЦ тоже должен где-то храниться, мы используем путь по умолчанию: C:Windowssystem32CertSrvCertEnroll.
Теперь то, что касается проверки цепочки доверия сертификатов. Клиенты будут проверять сами сертификаты, то есть надо включить информацию об их месте нахождения. Точно так же мы воспользуемся http и ldap-путями.
Настройку AIA выполним таким образом:
certutil -setreg CACACertPublicationURLs
"1:C:Windowssystem32CertSrvCertEnroll%3%4.crtn2:http://pki.nwtraders.msft/PKI//%3%4.crtn2:
ldap:///CN=%7,CN=AIA,CN=Public Key Services,CN=Services,%6%11"
Для настройки срока действия сертификата и периодичности публикации CRL, если нам требуется изменить уже внесенные с помощью capolicy.inf значения, с помощью все той же утилиты certutil выполняются нижеследующие команды:
certutil -setreg CAValidityPeriodUnits 20
certutil -setreg CAValidityPeriod "Years"
certutil -setreg CACRLPeriodUnits 26
certutil -setreg CACRLPeriod "Weeks"
certutil -setreg CACRLOverlapUnits 2
certutil -setreg CACRLOverlapPeriod "Weeks"
certutil -setreg CACRLDeltaPeriodUnits 0
certutil -setreg CACRLDeltaPeriod "Hours"
Последовательно здесь настраиваются:
- Период действия сертификата центра сертификации
- Единицы измерения для ValidityPeriodUnits
- Периодичность выпуска списков CRL и Delta CRL, а также срок продленного действия списков CRL
Последнее, что осталось нам сделать, – настроить необходимый аудит.
certutil -setreg CAAuditFilter 127
Наконец, для определения значения переменной %6 -<ConfigurationContainer> выполните следующую команду:
certutil -setreg caDSConfigDN "CN=Configuration,DC=nwtraders,DC= msft"
Вот теперь мы можем считать, что корневой центр сертификации развернут.
Продолжение следует.
- How CA Certificates Work. Overview of Capolicy.inf – https://technet.microsoft.com/en-us/library/cc737264(WS.10).aspx.
- Prepare the Capolicy.inf – https://docs.microsoft.com/en-us/windows-server/networking/core-network-guide/cncg/server-certs/prepare-the-capolicy-inf-file.
- Шапиро Л. Внедрение инфраструктуры открытых ключей на основе Windows Server 2016. Часть 1. Предварительный этап. / «Системный администратор», № 1-2, 2018 г. – С. 23-27. URL: http://samag.ru/archive/article/3576.
- Certutil – https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certutil.
- Certification Authority Guidance – https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831574(v=ws.11).
Ключевые слова: инфраструктура открытых ключей, сертификаты, сервер сертификатов, конфигурация.
Мой мир
Вконтакте
Одноклассники
Google+
- Remove From My Forums
-
Question
-
Hi All,
We have two standalone CA Server in our premises
-
ROOT-CA
-
Sub-coordinate CA
The standalone sub-coordinate CA server is installed and configured by using below article
https://windowstechpro.com/how-to-install-subordiante-ca-in-windows-server-2012-r2/
Root-CA server certificate valid till — 2/25/2044
Sub-coordinate server certificate valid till — 2/25/2044
On Sub-Coordinate CA server we installed NDES «Network Device Enrollment Service» and it created two certificate which is valid till 4/16/2021
The network devices which get the certificate from Sub-coordinate CA has the same validity
Is there any way where we can use custom certificate template for NDES certificate and configure their extend it’s validity
Appreciate some help..
Thanks Rahul$
-
Answers
-
Thanks for your response Jochen..
Issue has been resolved by removing the NDES feature, then run below command on Sub-CA Server, then re-add the NDES feature again.
Below command extend the validity of the certificates issued by the SUB-CA
certutil -setreg CAValidityPeriodUnits 24
certutil -setreg CAValidityPeriod Years
net stop certsvc && net start certsvc
Certificate requested by the network devices also valid till 2/25/2044
Thanks Rahul$
-
Marked as answer by
Wednesday, April 22, 2020 7:30 AM
-
Marked as answer by
- Remove From My Forums
-
Question
-
Hi All,
We have two standalone CA Server in our premises
-
ROOT-CA
-
Sub-coordinate CA
The standalone sub-coordinate CA server is installed and configured by using below article
https://windowstechpro.com/how-to-install-subordiante-ca-in-windows-server-2012-r2/
Root-CA server certificate valid till — 2/25/2044
Sub-coordinate server certificate valid till — 2/25/2044
On Sub-Coordinate CA server we installed NDES «Network Device Enrollment Service» and it created two certificate which is valid till 4/16/2021
The network devices which get the certificate from Sub-coordinate CA has the same validity
Is there any way where we can use custom certificate template for NDES certificate and configure their extend it’s validity
Appreciate some help..
Thanks Rahul$
-
Answers
-
Thanks for your response Jochen..
Issue has been resolved by removing the NDES feature, then run below command on Sub-CA Server, then re-add the NDES feature again.
Below command extend the validity of the certificates issued by the SUB-CA
certutil -setreg CAValidityPeriodUnits 24
certutil -setreg CAValidityPeriod Years
net stop certsvc && net start certsvc
Certificate requested by the network devices also valid till 2/25/2044
Thanks Rahul$
-
Marked as answer by
Wednesday, April 22, 2020 7:30 AM
-
Marked as answer by