Примечание: данный пост содержит сведения об изменении настроек Active Directory и Certification Authority и автор ещё раз обращает ваше внимание на дисклаймер данного блога.
Иногда при миграции CA принимают решение об отказе в поддержке предыдущей PKI. Это обычно вызвано различными причинами. Например, некорректные и непоправимые ошибки в первоначальной конфигурации CA, неумение правильно провести миграцию, необходимость переконфигурации CA, которая требует создания нового CA и т.д. В таких случаях обычно поступают так:
- параллельно устанавливают ещё один CA и удаляют старый. При этом сертификаты предыдущего CA не поддерживаются и просто выводятся из обращения (как правило с ними ничего не происходит, а только перестают работать, поскольку CA больше не публикует CRL'ы и проверки таких сертификатов проваливаются). Такой метод применяют, когда количество сертификатов выданных прежним CA невелико и им можно пренебречь и переиздать сертификаты.
- параллельно устанавливается ещё один CA, делают кросс-сертификацию старого CA и удаляют его. При этом сертификаты предыдущего CA поддерживаются и используются в работе. В виду отсутствия предыдущего CA, необходимо дополнительно обеспечить успешную валидацию всех ранее выданных сертификатов.
Если первый метод достаточно прост и тривиален, второй уже требует дополнительных действий со стороны администратора. Это публикация CRL при фактическом отсутствии упразднённого CA и поддержание CRT файлов для построения цепочек сертификатов. И в данном случае старая PKI будет частью новой PKI за счёт кросс-сертификации. Для начала нужно рассмотреть что такое кросс-сертификация. Кросс-сертификация — процесс заверения одной иерархией PKI другой иерархии PKI. При этом заверенная PKI будет являться частью завереямой PKI. Рассмотрим простой пример:
Имеется иерархия CA из корневого Contoso-CA1 и подчинённого Contoso-CA2. Вы создаёте новую иерархию, состоящую из Adatum-CA1 и Adatum-CA2. При этом вы можете сделать кросс-сертификацию между Adatum-CA2 и Contoso-CA1 или Contoso-CA2:
В первом случае цепочка сертификатов для сертификата выпущенного в Contoso-CA2 будет выглядеть так:
Adatum-CA1
Adatum-CA2
Contoso-CA1
Contoso-CA2
EndCert
Как видите, клиент не должен явно доверять Contoso-CA1, а только Adatum-CA1. За счёт кросс-сертификации цепочка будет начинаться в иерархии Contoso и заканчиваться в иерархии Adatum.
Во втором случае цепочка сертификатов для сертификата выпущенного в Contoso-CA2 будет выглядеть так:
Adatum-CA1
Adatum-CA2
Contoso-CA2
EndCert
В принципе, можно сделать ещё и вот так:
В первом случае цепочка сертификатов для сертификата выпущенного в Contoso-CA2 будет выглядеть так:
Adatum-CA1
Contoso-CA1
Contoso-CA2
EndCert
Во втором случае цепочка сертификатов для сертификата выпущенного в Contoso-CA2 будет выглядеть так:
Adatum-CA1
Contoso-CA2
EndCert
По большому счёту вариантов достаточно много и выбор конкретного может быть продиктован как определёнными требованиями, так и вашими личными предпочтениями. Лично я предпочитаю делать кросс-сертификацию так, чтобы в конечном итоге получить наиболее короткую цепочку, но, по возможности, без включения в неё дополнительных корневых сертификатов. Поэтому для меня наиболее предпочтительный вариант будет второй вариант на первой картинке:
В нашем случае мы создаём новую иерархию Adatum и постепенно избавляемся от Contoso. Важно учитывать, что демонтаж старых центров сертификации можно проводить только после полной настройки новой иерархии PKI.
Подготовка шаблонов сертификатов
- Войдите в систему с правами Enterprise Admins.
- Нажмите Start, Run… и введите 'MMC'. Если появится диалоговое окно UAC, подтвердите запуск консоли.
- В меню File нажмите Add/Remove Snap-ins.
- В списке выберите Certificate Templates, нажмите Add и нажмите Ok для завершения операции.
- В открывшейся оснастке найдите стандартный шаблон User. Нажмите правой кнопкой на нём и выберите Duplicate Template. Если появится запрос о выборе версии шаблона укажите Windows Server 2003 Enterprise и нажмите Ok.
- Во вкладке Properties of New Tamplate укажите новое название шаблона. Например, Cross-signing.
- Снимите галочку с Publish certificate in Active Directory.
- Во вкладке Request Handling можете указать другой CSP, если, например, хотите хранить сертификат на смарт-карте (рекомендуется).
- В Issuance Requirements можете указать требование явного одобрения запроса со стороны администратора CA.
- Во вкладке Extensions выделите Application Policies и нажмите Edit.
- Удалите всё из списка, после чего нажмите Add и выберите Qualified Subordination. Нажмите Ok.
- Во вкладке Security удалите всех из разрешений, кроме глобальной или универсальной группы, которой будет разрешено энролить сертификаты для подписи запросов кросс-сертификации.
- Нажмите Ok для сохранения изменений и записи шаблона в Active Directory.
Теперь нужно добавить нужные шаблоны в выдачу на CA. Для этого:
- Войдите на сервер CA с именем Adatum-CA2 с правами Enterprise Admins.
- Нажмите Start, Administrative Tools и нажмите Certification Authority.
- Выделите секцию Certificate Templates и в контекстном меню выберите New –> Certificate Template to issue.
- В списке выделите только что созданный Cross-signing и Cross Certification Authority и нажмите Add.
Теперь запросите сертификат на основе шаблона Cross-signing. Этот сертификат вам потребуется для подписывания запросов сертификатов на основе шаблона Cross Certification Authority.
Создание кросс-сертификата
Кросс-сертификация — это весьма обширная тема. Для нашего сценария нет необходимости рассматривать подробности т.н. qualified subordination, поэтому ограничимся самым простым вариантов без дополнительных ограничений. Для этого создайте текстовый файл с именем Policy.inf и следующим содержанием:
[Version]
Signature = $WindowsNT$
[RequestAttributes]
CertificateTemplate = CrossCA
далее скопируйте сертификат CA Contoso-CA2 на локальный диск. Запустите командную строку и выполните следующую команду:
certreq –policy
В открывшемся диалоговом окне укажите файл сертификата Contoso-CA2 и нажмите Open. Во втором диалоговом окне укажите созданный файл policy.inf и нажмите Open. После чего появится окно выбора сертификата подписи. После указания сертификата подписи нажмите Ok и укажите путь размещения и имя запроса сертификата. После чего выполните следующую команду:
certreq –submit path\cross.req
где path\cross.req — путь размещения и имя файла запроса для кросс-сертификата. Если появилось диалоговое окно выбора сервера CA, выберите тот, в выдаче которого находится шаблон Cross Certification Authority и нажмите Ok.
- Войдите на сервер CA с именем Adatum-CA2 с правами Enterprise Admins и администратора CA.
- Нажмите Start, Administrative Tools и нажмите Certification Authority.
- Выделите секцию Pending Requests, найдите в списке самый последний запрос и в контекстном меню выберите Issue. Предварительно вы можете убедиться, что запрос получился корректный и все данные в нём правильные.
- Перейдите в секцию Issued Certificates, найдите самый последний сертификат (должен быть наш кросс-сертификат) и экспортируйте его в CER файл.
если открыть сертификат и посмотреть вкладку Certification path, можно увидеть, что цепочка этого сертификата заканчивается не на Contoso-CA1, а на Adatum-CA1. Следовательно, для данного сертификата доверие, да и наличие самого Contoso-CA1 уже не обязательно.
На данном этапе остался последний шаг — публикация кросс-сертификата в Active Directory. Для этого запустите командную строку с повышенными привилегиями (выбрав Run as administrator в контекстном меню значка Command Prompt) и выполните в ней следующую команду:
certutil –dspublish –f path\cross.cer
где path\cross.cer — путь размещения и имя файла кросс-сертификата.
Подготовка к демонтажу старых центров сертификации
Прежде чем демонтировать ненужные центры сертификации, необходимо переподписать все их CRL и поместить их в точки публикации CDP, например, LDAP и/или веб-сервер. Для этого вы должны зайти на каждый демонтируемый сервер CA и выполнить следующую команду:
cd c:\windows\system32\certsrv\certenroll\
certutil –sign .crl 1.crl now+1825:00
certutil –sign +.crl 1+.crl now+1825:00
Certutil –sign переподпишет старые CRL'ы с новым более долгим сроком, в нашем случае — на 5 лет. Т.е. эти CRL'ы будут действительны последующие 5 лет. Далее, вы должны скопировать эти CRL'ы в точки публикации. При этом следует удалить единички (которые были добавлены только для создания нового файла) из имён файлов, чтобы они совпадали с именами файлов в расширениях сертификатов.
Демонтаж старых центров сертификации
Демонтаж старых центров сертификации следует проводить в соответствии с этим руководством: How to decommission a Windows enterprise certification authority and how to remove all related objects from Windows Server 2003 and from Windows Server 2000
Примечание: удалять следует только объекты относящиеся демонтируемым центрам сертификации. В противном случае вы можете удалить и объекты новых действующих CA.