Настройка инфраструктуры открытых ключей PKI 4
Настройка выдающего УЦ
Основные параметры УЦ:
- Имя УЦ: IssuingCA
- Алгоритм хэширования: SHA 256
- Срок действия сертификата УЦ: 5 лет
- Срок действия выпускаемых сертификатов: 1-4 лет
- Длина ключа: 2048
- Время жизни списков отзывов: 5 дней
- Операционная система Windows 2012 R2
Инсталляция роли
Add-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools
Add-WindowsFeature Adcs-web-enrollment
Install-adcswebenrollment
Описание файла настроек УЦ
[Version]
Signature = «$Windows NT$»
OID = 2.5.29.32.0
[certsrv_server]
RenewalKeyLength = 2048
RenewalValidityPeriodUnits = 5
RenewalValidityPeriod = years
CRLPeriodUnits = 5
CRLPeriod = days
CRLOverlapUnits = 1
CRLOverlapPeriod = days
CRLDeltaPeriodUnits = 12
CRLDeltaPeriod = hours
AlternateSignatureAlgorithm = 0
LoadDefaultTemplates=0
Я хотел бы обратить внимание на этот параметр LoadDefaultTemplates=0 (удаляет по умолчанию шаблоны сертификатов из раздела Certificate Templates), раньше я не придавал должного значения этому параметру, так как рзаворачивал УЦ там где их не было впринципе или в тестовых средах. В этом проекте я столнулся с тем, что как только я развернул выдающий УЦ (без этого параметра) УЦ в течении часа автоматически выдал 400 сертификатов рабочим станциям и серверам. Честно признаться я не смог разобраться по какой причине. Политик Autoenrollment я найти не смог, какие сервисы запросили сертификаты по стандартным логам на рабочей станции тоже не смог определить. После этого я всегда включаю данный параметр, если разворачиваю УЦ в промышленной среде.
Инсталляция выдающего УЦ
Install-AdcsCertificationAuthority -CAType EnterpriseSubordinateCA -CACommonName «IssuingCA» -KeyLength 2048 -HashAlgorithm SHA256 -CryptoProviderName «RSA#Microsoft Software Key Storage Provider»
После того, как команда отработает создается файл запроса
Копируем файл ENT-CA.viktorp.club_IssuingCA.req на корневой УЦ.
На корневом УЦ выпустить сертификат
1 В оснастке Certification Authority из папки Administrative Tools.
2 Нажмите правой клавишей на названии сервера CA, далее All Tasks –> Submit new request.
3 В диалоговом окне укажите файл запроса, который был сгенерирован на этапе установки «IssuingCA», теперь запрос находится в очереди ожидания.
4 Перейдите в раздел Pending Requests, выделите нужный запрос, нажмите правой кнопкой и нажмите Issue.
5 Перейдите в раздел Issued certificates, откройте сертификат, перейдите на вкладку Details и там нажмите кнопку Copy to File и сохраните файл в папку C:\.
* После этого шага, впринципе корневой УЦ больше не понадобиться его можно выключить до момента обновления CRL или выпуска еще одного сертификата.
6 На выдающем сервере УЦ перейдите в раздел Certification Authority.
7 Нажмите правой клавишей на названии сервера CA, далее All Tasks –> Install CA Certificate и укажите скопированный сертификат.
8 Запустите CA.
9 Проверьте параметры сертификата.
10 настройка параметров CRL и AIA и дублирование параметров в файле CAPolicy
$crllist = Get-CACrlDistributionPoint; foreach ($crl in $crllist) {Remove-CACrlDistributionPoint $crl.uri -Force};
Add-CACRLDistributionPoint -Uri C:\Windows\System32\CertSrv\CertEnroll\%3%8%9.crl -PublishToServer -PublishDeltaToServer -Force
Add-CACRLDistributionPoint -Uri http://crl.viktorp.club/crld/%3%8%9.crl -AddToCertificateCDP -AddToFreshestCrl -Force
Add-CACRLDistributionPoint -Uri file://\\crl.viktorp.club\pki\CRLD\%3%8%9.crl -PublishToServer -PublishDeltaToServer -Force
Add-CACRLDistributionPoint -Uri «ldap:///CN=%7%8,CN=%2,CN=CDP,CN=Public Key Services,CN=Services,%6%10» -AddToCrlCdp -AddToCertificateCdp
$aialist = Get-CAAuthorityInformationAccess; foreach ($aia in $aialist) {Remove-CAAuthorityInformationAccess $aia.uri -Force};
Add-CAAuthorityInformationAccess -AddToCertificateAia http://crl.viktorp.club/crld/%3%4.crt –Force
Add-CAAuthorityInformationAccess –AddToCertificateAia “ldap:///CN=%7,CN=AIA,CN=Public Key Services,CN=Services,%6%11”certutil -setreg CA\ValidityPeriodUnits 4
certutil -setreg CA\ValidityPeriod «Years»
Параметр ValidityPeriodUnits 4 указывает, что максимальное время на которое могут быть выписаны сертификаты, насколько я помню по умолчанию 3 года.
Дублируем, то что было указано в файле CAPolicy
certutil -setreg CA\CRLPeriodUnits 5
certutil -setreg CA\CRLPeriod «Days»
certutil -setreg CA\CRLDeltaPeriodUnits 12
certutil -setreg CA\CRLDeltaPeriod «Hours»
certutil -setreg CA\CRLOverlapPeriod «Days»
certutil -setreg CA\CRLOverlapUnits 1
Выполнить публикацию CRL в точки публикации, используя команду
certutil -crl
Осталось опубликовать сертификат, для этого необходимо:
- Указать контекст конфигураци для сервера IssuingCA (корневой домен)
certutil -setreg CA\DSConfig «CN=Configuration,DC=viktorp,DC=club»
2. Опубликовать сертификат IssuingCA в AD
certutil -dspublish -f C:\{название_сертификата}.crt Subca
certutil -dspublish -f C:\{название_сертификата}.crt NTAuthCA
net stop certsvc && net start certsvc
Настройка инфраструктуры открытых ключей PKI 3
Настройка точек публикации CRL и цепочки сертификатов AIA
Идентичные настройки необходимо выполнить для двух серверах WEB1 и WEB2:
1. Установить IIS в стандартной комплектации
2. Установить DFS и NLB роли на серверы:
Install-WindowsFeature -Name FS-DFS-Namespace, FS-DFS-Replication, NLB -IncludeManagementTools
3. Настроить NLB
Настройку NLB описывать не буду, она очень простая. Есть нюансы при выборе Unicast и Multicast режимов работы кластера. Некоторые ссылки указаны ниже:
https://technet.microsoft.com/en-us/library/cc782694(v=ws.10).aspx
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1556
У меня был настроен Unicast с одним адаптером. Правило балансировки только для одного порта TCP 80.
В DNS вручную создана запись A (crl.viktorp.club= VIP NLB), которая указывает на общий виртуальный IP-адрес кластера NLB.
4 Настройка DFS на двух серверах:
На серверах WEB1 и WEB2 создать папку C:\CRLD, сделать ее общедоступной (Shared) и назначить локальным администратором полные права NTFS на папку.
В оснастке DFS Management создать Namespace с названием PKI и добавить два Namespace сервера.
Добавить новую папку с названием «CRLD» в которой добавляются два сервера WEB1 и WEB2 с локально, расположенными папками CRLD.
После создания папки CRLD автоматически запускается помощник настройки репликации в ходе которого необходимо указать два сервера репликации WEB1 и WEB2.
После этого можно создать тестовый файл в \\viktorp.club/pki/crld который будет доступен в папках CRLD на серверах WEB1 и WEB2.
6. Выполнить WEB публикацию содержимого папки CRLD с помощью IIS
Для настройки IIS необходимо создать сервисную учетную запись Domain User — svc-iisuser (не забываем отключать устаревание паролей для сервисных учетных записей).
На каждом из серверов WEB1 или WEB2 создать виртуальную дирректорию CRLD
В разделе Connect as.. указать, созданную учетную запись.
Включить на двух серверах Directory Browsing для CRLD и Double Escaping
На этом настройка web-серверов завершена, протестируйте доступность общей папки, репликацию файлов между серверами, их доступность через браузер. Не забывайте выполнить настройки проксирующих серверов для того, чтобы не было проблем с доступом до файлов ИОК.
Настройка инфраструктуры открытых ключей PKI 2
Настройка автономного корневого УЦ
Основные параметры УЦ:
- Имя УЦ: RootCA
- Алгоритм хэширования: SHA 256
- Срок действия сертификата УЦ: 10 лет
- Срок действия выпускаемых сертификатов: 5 лет
- Длина ключа: 2048
- Время жизни списков отзывов: 1 год
- Операционная система Windows 2012 R2
Инсталляция роли
Add-WindowsFeature Adcs-Cert-Authority -IncludeManagementTools
Описание файла настроек УЦ
Файл CApolicy.inf следует поместить в C:\Windows до начала настройки роли Active Directory Certificate Services.
Содержание файла CApolicy.inf
[Version]
Signature=”$Windows NT$”
[Certsrv_Server]
RenewalKeyLength=2048
RenewalValidityPeriod=Years
RenewalValidityPeriodUnits=10
CRLPeriod=Years
CRLPeriodUnits=1
CRLDeltaPeriod=Days
CRLDeltaPeriodUnits=0
LoadDefaultTemplates=0
AlternateSignatureAlgorithm=0
Где:
CRLPeriodUnits — Время жизни CRL (период обновления CRL)
CRLDeltaPeriodUnits — Дельты CRL. в корневых УЦ не публикуются.
RenewalValidityPeriodUnits — Время жизни сертификата УЦ
Хочу отдельно выделить параметр «AlternateSignatureAlgorithm=0» в случае если его значение «1» тогда в качестве алгоритма цифровой подписи используется RSASSA-PSS. Проблема заключается в том, что данный алгоритм не поддерживается некоторыми аппаратными устройствами. В случае, если вы уже установили УЦ с использованием RSASSA-PSS, для того, чтобы переделать в SHA1 или SHA256 необходимо:
1 На корневом сервере выполнить команду:
certutil -setreg csp\alternatesignaturealgorithm 0
net stop certsvc && net start certsvc
2 Перевыписать сертификат корневого УЦ;
3 Повторить последовательность действий на всех подчиненных УЦ
Инсталляция УЦ
Install-AdcsCertificationAuthority -CAType StandaloneRootCA -KeyLength 2048 -HashAlgorithmName SHA256 -CACommonName «RootCA» -CryptoProviderName «RSA#Microsoft Software Key Storage Provider» -ValidityPeriod Years -ValidityPeriodUnits 10
Настройка параметров УЦ
#Период перекрытия списка отзывов. Время в течении которого новый CRL опубликован но старый еще валидный.
Certutil -setreg CA\CRLOverlapPeriodUnits 12
Certutil -setreg CA\CRLOverlapPeriod «Hours»
#Время в годах валидности выпускаемых сертификатов корневым УЦ
Certutil -setreg CA\ValidityPeriodUnits 5
Certutil -setreg CA\ValidityPeriod «Years»
#Настройка CRL публикаций
$crllist = Get-CACrlDistributionPoint; foreach ($crl in $crllist) {Remove-CACrlDistributionPoint $crl.uri -Force}; Add-CACRLDistributionPoint -Uri C:\Windows\System32\CertSrv\CertEnroll\VIKTORP-ROOTCA%8.crl -PublishToServer -Force
Add-CACRLDistributionPoint -Uri http://crl.viktorp.club/crld/VIKTORP-ROOTCA%8.crl -AddToCertificateCDP -Force
#Настройка AIA публикаций
$aialist = Get-CAAuthorityInformationAccess; foreach ($aia in $aialist) {Remove-CAAuthorityInformationAccess $aia.uri -Force};
Add-CAAuthorityInformationAccess -Uri http://crl.viktorp.club/crld/VIKTORP-ROOTCA%4.crt -AddToCertificateAia -Force
#Включение аудита событий УЦ
Certutil -setreg CA\AuditFilter 127
restart-service certsvc
#Публикация новых CRL
certutil -crl
#Переименование файлов CRL и CRT и публикация в Active Directory
Необходимо вручную переименовать файлы CRT и CRL и скопировать их на выдающий УЦ.
Процедуру публикации в Active Directory необходимо выполнять с правами Domain Admins и Enterprise Admins на сервере входящим в состав домена, например ENT-CA.
certutil –dspublish –f VIKTORP-ROOTCA.crt RootCA #Публикация к AIA контейнере
certutil –addstore –f root VIKTORP-ROOTCA.crt #Публикация в Certification Authorities Container контейнере
certutil –addstore –f root VIKTORP-ROOTCA.crl
Справочник переменных
Variable | Extensions tab name | Description |
---|---|---|
%1 | <ServerDNSName> | The DNS name for the CA computer. If connected to a DNS domain, it is the fully qualified domain name; otherwise, it is the hostname of the computer. |
%2 | <ServerShortName> | The NetBIOS name of the CA server |
%3 | <CaName> | The name of the CA |
%4 | <CertificateName> | This allows each additional revision of the certificate to have a unique suffix. |
%4 | None | Not used |
%6 | <ConfigurationContainer> | The location of the configuration container in Active Directory Domain Services (AD DS) |
%7 | <CATruncatedName> | The name of the CA truncated to 32 characters with a hash at the end |
%8 | <CRLNameSuffix> | This inserts a suffix on the file name when publishing a CRL to a file or URL location. |
%9 | <DeltaCRLAllowed> | When a delta CRL is published, this replaces the CRLNameSuffix variable with a separate suffix to distinguish the delta CRL from the CRL. |
%10 | <CDPObjectClass> | The object class identifier for CRL distribution points, which is used when publishing to an LDAP URL. |
%11 | <CAObjectClass> | The object class identifier for a CA, which is used when publishing to an LDAP URL. |
Настройка инфраструктуры открытых ключей PKI 1
Краткое описание инфраструктуры открытых ключей
Настройка инфраструктуры открытых ключей 1 | Введение
Настройка инфраструктуры открытых ключей 2 | Корневой УЦ
Настройка инфраструктуры открытых ключей 3 | Точки публикации CRL и AIA
Настройка инфраструктуры открытых ключей 4 | Выдающий УЦ
Ниже описан вариант настройки инфраструктуры открытых ключей (далее ИОК), который я использовал в промышленной среде в одной организации. В данных заметках отсутсвует описание процесса выбора архитектуры, только последовательность действий внедрения ИОК.
Задачей было внедрение ИОК на базе Windows 2012 R2 для возможностей аутентификации пользователей на веб-ресурсах и настройки SSL для веб-сервисов. Пользовательские сертификаты должны были назначаться пользователям в автоматическом режиме или от имени администратора ИОК. Для точек распространения CRL и AIA должна быть обеспечена отказоустойчивость. Отказоустойчивость серверов УЦ не обеспечивалась.
ИОК состоит из:
- ROOT — Автономный корневой Удостоверяющий Центр (далее УЦ). Предназначен для выдачи сертификатов дочерним серверам УЦ.
- ENT-PKI — выдающий УЦ. Используется для выдачи сертификатов конечным потребителям ИОК.
- WEB1 — Веб-сервер. Предназначен для публикации списков отзывов и сертификатов УЦ (CRL и AIA точки распространения)
- WEB2 — Веб-сервер. Выполняет те же функции, что и предыдщий сервер.
Безопасность хранения файлов сертификатов обеспечивалась за счет создания регулярных резервных копий и использования DFS. Безопасность веб-публикации обеспечивалась за счет создания двух узлового кластера NLB.