Настройка инфраструктуры открытых ключей 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. |
Запрос сертификата Standalone CA
Задачка заключалась в том, чтобы создать сертификат для сервера Lync 2010 на основе stanalone root CA.
Решил написать, процедуру, больше для себя.
1. Настроить ЦС, для того, чтобы он смог работать с сертификатами SAN (только для Windows 2003)
certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
net stop certsvc
net start certsvc
2. Помещаем публичный сертификат на сервер Lync в раздел «Доверенных корневых центров сертификации»
3. Создаем .inf файл из которого будет создан запрос:
[Version]
Signature=»$Windows NT$
[NewRequest]
Subject = «CN=corpdc1.fabrikam.com» ; must be the FQDN of domain controller
Exportable = FALSE ; TRUE = Private key is exportable
KeyLength = 2048 ; Common key sizes: 512, 1024, 2048,
; 4096, 8192, 16384
KeySpec = 1 ; Key Exchange
KeyUsage = 0xA0 ; Digital Signature, Key Encipherment
MachineKeySet = True
ProviderName = «Microsoft RSA SChannel Cryptographic Provider»
ProviderType = 12
RequestType = CMC
; Omit entire section if CA is an enterprise CA
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
[RequestAttributes]
SAN=»dns=corpdc1.fabrikam.com&dns=.fabrikam.com&dns=ldap.fabrikam.com»
4. На основе .inf файла создать запрос
Перейти в каталог, где находится inf файл и создать на его основе запрос
certreq -new ssl.inf ssl.req
5. Утвердить запрос на ЦС
certreq -submit -config «компьютер\названиеЦС» ssl.req
6. Так как в моем случае ЦС Standalone, необходимо перейти в оснастку центра сертификации и в разделе pending request(запрос в ожидании) выпустить сертификат.
7. Экспортировать сертификат на сервер Lync
Способ А. Экспортировать можно вручную с ЦС
Способ Б. Экспортировать с помощью команды
certreq -retrieve RequestID ssl.cer,
где RequestID — это номер, полученный при запросе сертификата в ЦС.
После этого в папке появиться сертификат ssl.cer
8. Установка сертификата в хранилище
certreq -accept ssl.cer