Конфигурация площадки
Домен: 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 - Другие пользователи