Версия для печати

Разворачиваем Центр сертификации в домене(PKI)

Оцените материал
(37 голосов)

Конфигурация площадки

Домен: TEST.LOCAL

Серверы: (Автономный) RootCA; (Предприятие) SRV03.TEST.LOCAL

Сетевое хранилище DFS: \\test.local\SOFT\PKI

WEB сервер: совмещён с сервером ЦС домена SRV03.TEST.LOCAL

Подготовка сетевого хранилища

Создать сетевую папку на файловом сервере и подключить к пространству имён. Назначить права на папку: Доступ - Все (чтение/запись); Безопасность - TEST\SRV03$ (чтение/запись)(учётная запись сервера ЦС в домене)

Подготовка WEB сервера

На серверах DNS (в случае домана - контроллеры домена) создать запись pki.test.local ведущую на IP адрес WEB сервера (в нашем случае SRV03.TEST.LOCAL)

Создасть сайт pki.test.local на WEB сервере, указав в качестве физического сетевой путь \\test.local\SOFT\PKI

Для возможности работы с сетевой папкой необходимо запускать сайт как сетевую службу. Для этого в разделе Пулы приложений - выбрать приложение созданого сайта PKI - Дополнительные параметры. Параметр Модель процесса - Удостоверение установить NetworkService. Перейти в настройки сайта - Проверка подлинности - Анонимная проверка подлинности - Изменить и установить Удостоверение пула приложений

Чтобы IIS сервер мог распознавать DeltaCRL необходимо добавить возможность чтения знака "+". Для этого в оснастке IIS нужно в настройках сайта открыть Фильтрация запросов - Изменить параметры и установить Разрешить двойное преобразование

Источник: https://windowsnotes.ru/iis/application-pool-identities-v-iis/

Установка корневого центра сертификации

Предполагается, что компьютер с именем RootCA установлен, обновлён и сконфигурированы параметры безопасности. Данный компьютер будет выполнять роль корневого центра сертификации (Root Certification Authority). Поскольку корневой CA — самая важная точка в иерархии PKI, этот сервер будет нормально выключен и включаться только для следующих целей:

  • Отправка новой заявки на сертификат;
  • Публикация CRL;
  • Обновление сертификата самого CA;
  • Установка обновлений безопасности.

В остальное время он должен быть выключен и физический доступ к нему должен быть ограничен. Данный сервер не будет издавать сертификаты конечным потребителям, поэтому выключенное состояние никак на потребителях не отразится.

После установки Центра сертификации (из стостава AD CS) необходимо её настроить.

  • Автономный ЦС
  • Корневой ЦС
  • Создать новый закрытый ключ
  • RSA#Microsoft Software Key Storage Provider; длину ключа в 2048 бит и алгоритм подписи в SHA1
  • Имя ЦС: ROOT-TEST-CA
  • Период действия сертификата = 15 лет
  • Период публикации отозванных сертификатов = 1 год

Последующая настройка выполняется с помощью коммандной строки

Создаём папку в корне диска C, где будут храниться CRT и CRL файлы

md C:\CertData

Задаём точки публикации CRL файлов и ссылки, публикуемые в издаваемых сертификатах. То же самое и для CRT файлов.

certutil -setreg CA\CRLPublicationURLs "65:%windir%\system32\CertSrv\CertEnroll\%3%8%9.crl\n65:C:\CertData\%3%8%9.crl\n2:http://pki.test.local/%3%8%9.crl"
certutil -setreg CA\CACertPublicationURLs "1:%windir%\system32\CertSrv\CertEnroll\%1_%3%4.crt\n2:http://pki.test.local/%3%4.crt"

Для Windows 2008 строка будет с двумя знаками %% для переменных certutil -setreg CA\CRLPublicationURLs "65:%windir%\system32\CertSrv\CertEnroll\%%3%%8%%9.crl\n65:C:\CertData\%%3%%8%%9.crl\n2:http://pki.test.local/%%3%%8%%9.crl"
и также для certutil -setreg CA\CACertPublicationURLs "1:%windir%\system32\CertSrv\CertEnroll\%%1_%%3%%4.crt\n2:http://pki.test.local/%%3%%4.crt"
Поскольку мы не можем управлять публикацией CRT файлов, мы его переименовываем в нужное имя и копируем в папку CertData

ren %windir%\system32\CertSrv\CertEnroll\*.crt ROOT-TEST-CA.crt
copy %windir%\system32\CertSrv\CertEnroll\ROOT-TEST-CA.crt C:\CertData

задаём срок действия издаваемых сертификатов равным 15 лет

certutil -setreg CA\ValidityPeriodUnits 15
certutil -setreg CA\ValidityPeriod "Years"

Задаём параметры публикации CRL (повторяем, что было указано в CAPolicy.inf)

certutil -setreg CA\CRLPeriodUnits 12
certutil -setreg CA\CRLPeriod "Months"
certutil -setreg CA\CRLOverlapPeriod "Months"
certutil -setreg CA\CRLOverlapUnits 1
certutil -setreg CA\CRLDeltaPeriodUnits 0
certutil -setreg CA\CRLDeltaPeriod "Days"
certutil -setreg CA\CRLOverlapPeriod "Weeks"
certutil -setreg CA\CRLOverlapUnits 2

Примечание: Данные параметр может быть изменены и через реестр в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\

Включаем полный аудит для сервера CA

certutil -setreg CA\AuditFilter 127

Отключаем генерацию кросс-сертификатов

certutil -setreg ca\CRLFlags +CRLF_DISABLE_ROOT_CROSS_CERTS

Конфигурируем ЦС для включения истёкших отозванных сертификатов в списки отзыва

certutil –setreg ca\CRLFlags +CRLF_PUBLISH_EXPIRED_CERT_CRLS

Включаем поддержку сертификатов OCSP Response Signing на Offline CA:

certutil -v -setreg policy\editflags +EDITF_ENABLEOCSPREVNOCHECK
net stop certsvc && net start certsvc

Публикуем новый CRL в новую локацию.

certutil -CRL

Установка издающих центра сертификации

После установки Центра сертификации (из стостава AD CS) необходимо её настроить.

  • ЦС предприятия
  • Подчиненный ЦС
  • Создать новый закрытый ключ
  • RSA#Microsoft Software Key Storage Provider; длину ключа в 2048 бит и алгоритм подписи в SHA1
  • Имя ЦС: TEST-CA
  • Создать запрос сертификата в файле на конечном компьютере
  • Период действия сертификата = 10 лет
  • Период публикации отозванных сертификатов = 3 месяца

Скопировать файл запроса на сервер RootCA и выпустить по немуц сертификат

  • открыть Панель управления-Администрирование-Центр сетрификации
  • выбрать сервер-все задачи-Выдать новый запрос... и выбрать файл запроса
  • перейти в подраздел запросы в ожидании
  • выбелить запрос, затем все задачи - выдать
  • перейти в подраздел выданные сертификаты и открыть сетрификат
  • на вкладке Состав нажать копировать в файл и сохратить в формате .p7b (TEST-CA.p7b)

Скопировать файл выданного сертификата (TEST-CA.p7b) и файлы из папки C:\CertData (ROOT-TEST-CA.crt и ROOT-TEST-CA.crl) в сетевое хранилище \\test.local\SOFT\PKI

После этого сервер RootCA можно выключить.

Зарегистрировать файлы с корневого ЦС на подчинённом сервере (запускать с привилегиями Администратора)

certutil –addstore Root \\test.local\SOFT\PKI\ROOT-TEST-CA.crt
certutil –addstore Root \\test.local\SOFT\PKI\ROOT-TEST-CA.crl
certutil -dspublish -f \\test.local\SOFT\PKI\ROOT-TEST-CA.crt RootCA

Если ошибок не возникло, то установить сертификат ЦС (выданный RootCA)

  • открыть Панель управления-Администрирование-Центр сетрификации
  • выбрать сервер-все задачи-Установить сертификат ЦС и выбрать файл (TEST-CA.p7b)
  • после успешной установки файл .p7b можно удалить

Выполнить пакетный файл настройки для дальнейшей настройки

Задаём точки публикации CRL файлов и ссылки, публикуемые в издаваемых сертификатах. То же самое и для CRT файлов.

certutil -setreg CA\CRLPublicationURLs "65:%windir%\system32\CertSrv\CertEnroll\%3%8%9.crl\n65:\\test.local\SOFT\PKI\%3%8%9.crl\n6:http://pki.test.local/%3%8%9.crl"
certutil -setreg CA\CACertPublicationURLs "1:%windir%\system32\CertSrv\CertEnroll\%1_%3%4.crt\n2:http://pki.test.local/%3%4.crt"

Для Windows 2008 строка будет с двумя знаками %% для переменных certutil -setreg CA\CRLPublicationURLs "65:%windir%\system32\CertSrv\CertEnroll\%%3%%8%%9.crl\n65:\\test.local\SOFT\PKI\%%3%%8%%9.crl\n6:http://pki.test.local/%%3%%8%%9.crl"
и также для certutil -setreg CA\CACertPublicationURLs "1:%windir%\system32\CertSrv\CertEnroll\%%1_%%3%%4.crt\n2:http://pki.test.local/%%3%%4.crt
Поскольку мы не можем управлять публикацией CRT файлов, мы его переименовываем в нужное имя и копируем в папку CertData

ren %windir%\system32\CertSrv\CertEnroll\*.crt TEST-CA.crt
copy %windir%\system32\CertSrv\CertEnroll\TEST-CA.crt \\test.local\SOFT\PKI

задаём максимальный срок действия издаваемых сертификатов равным 5 лет

certutil -setreg CA\ValidityPeriodUnits 5
certutil -setreg CA\ValidityPeriod "Years"

Задаём параметры публикации CRL (повторяем, что было указано в CAPolicy.inf)

certutil -setreg CA\CRLPeriodUnits 3
certutil -setreg CA\CRLPeriod "Months"
certutil -setreg CA\CRLDeltaPeriodUnits 1
certutil -setreg CA\CRLDeltaPeriod "Months"
certutil -setreg CA\CRLOverlapPeriod "Days"
certutil -setreg CA\CRLOverlapUnits 10

Включаем наследование Issuer Statement в издаваемых сертификатах

certutil -setreg Policy\EnableRequestExtensionList +"2.5.29.32"

Включаем полный аудит для сервера CA

certutil -setreg CA\AuditFilter 127

задаём контекст конфигурации для сервера CA. Контекст конфигурации должен указывать на *корневой домен* текущего леса.

certutil -setreg CA\DSConfig "CN=Configuration,DC=test,DC=local"

публикуем сертификат CA в AD

certutil -dspublish -f \\test.local\SOFT\PKI\TEST-CA.crt Subca
certutil -dspublish -f \\test.local\SOFT\PKI\TEST-CA.crt NTAuthCA
net start certsvc

Публикуем новый CRL в новую локацию.

certutil –CRL

Проверка PKI предприятия

На сервере ЦС предприятия запустить оснастку PKIView.msc и проверить весь пусть регистрауии (Корневой и подчинённый серверы) - все пути AIA и CDP должны указывать на сайт http://pki.test.local

Внимание!

Особенность такого построения серверов (когда корневой сервер находится в отключенном режиме) является то, что периодически придётся вречную его запускать и выгружать обновлённый файл отозванных сервтификатов ROOT-TEST-CA.crt на общее хранилище. Для этого достаточно примерно за месяц до истечения действия текущего файла запустить сервер корневого ЦС и скопировать обновлённый файл из папки  C:\CertData. Если файл автоматически не обновился при запуске сервера, то обновить его командой

certutil –CRL

P.S.

Для того, чтобы теперь действующий на сервере SRV03.TEST.LOCAL WEB сервер корректно работал в домене по протоколу HTTPS нужно выпустить ему доменный сертификат.

Открываем Панель управления - Диспетчер службы IIS и выбираем WEB сервер (SRV03). Открываем Сертификаты сервера и проверяем текущие сертификаты. Сертификат сервера SRV03 на данный момент самоподписанный и поэтому не будет автоматически признаваться в домене.

Выбираем действие Создать сертификат домена... и заполняем данные. Полное имя должно соответствовать адресу требуемого сайта - в нашем случае будет SRV03.TEST.LOCAL, остальные поля произвольно. Далее выбираем сервер сертификации - в нашем случае будет TEST-CA\SRV03.TEST.LOCAL и назначаем Полное имя - оно будет отображаться как псевдоним в Диспетчере службы IIS.

После выпуска сертификата его нужно закрепить за основным сайтом сервера. Для этого нужно выбрать сайт Default Web Site - Изменить привязки, выбрать привязку https и в его настройках выбрать новый созданный сертификат.

Источники: https://www.sysadmins.lv/blog-ru/ustanavlivaem-certification-authority-podvedenie-itogov.aspx
http://www.alexxhost.ru/2011/05/pki.html
https://habr.com/company/microsoft/blog/348944/

Полезные команды:

Публикуем новый CRL в новую локацию

certutil –CRL

Просмотр PKI структуры

PKIView.msc

Менеджер сертификатов

certmgr.msc

добавить сертификаты в хранилище

импортируем сертификат рутового ЦА

certmgr.exe -add -c RootCA.cer -s -r localMachine Root

импортируем сертификат выдающего ЦА

certmgr.exe -add -c CA.cer -s -r localMachine CA

импортируем сертификат в хранилище компа

certutil.exe -importpfx -p password VPN_Cert.pfx

импортируем сертификат в хранилище пользователя

importpfx.exe -f VPN_Cert.pfx -p password -t User -s My

список названий хранилищ сертификатов:
My - Личные
Root - Доверенные корневые центры сертификации
Trust - Доверительные отношения в предприятии
CA - Промежуточные центры сертификации
AuthRoot - Сторонние корневые центры центры сертификации
TrustedPublisher - Довереннные издатели
TrustedPeople - Доверенные лица
AddressBook - Другие пользователи