Contents of this directory is archived and no longer updated.

Примечание: данный пост содержит сведения об изменении настроек 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:

Subordinate cross-certification

В первом случае цепочка сертификатов для сертификата выпущенного в 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

В принципе, можно сделать ещё и вот так:

Root cross-certification

В первом случае цепочка сертификатов для сертификата выпущенного в Contoso-CA2 будет выглядеть так:

Adatum-CA1
        Contoso-CA1
                Contoso-CA2
                        EndCert

Во втором случае цепочка сертификатов для сертификата выпущенного в Contoso-CA2 будет выглядеть так:

Adatum-CA1
       Contoso-CA2
               EndCert

По большому счёту вариантов достаточно много и выбор конкретного может быть продиктован как определёнными требованиями, так и вашими личными предпочтениями. Лично я предпочитаю делать кросс-сертификацию так, чтобы в конечном итоге получить наиболее короткую цепочку, но, по возможности, без включения в неё дополнительных корневых сертификатов. Поэтому для меня наиболее предпочтительный вариант будет второй вариант на первой картинке:

image

В нашем случае мы создаём новую иерархию Adatum и постепенно избавляемся от Contoso. Важно учитывать, что демонтаж старых центров сертификации можно проводить только после полной настройки новой иерархии PKI.

Подготовка шаблонов сертификатов

  1. Войдите в систему с правами Enterprise Admins.
  2. Нажмите Start, Run… и введите 'MMC'. Если появится диалоговое окно UAC, подтвердите запуск консоли.
  3. В меню File нажмите Add/Remove Snap-ins.
  4. В списке выберите Certificate Templates, нажмите Add и нажмите Ok для завершения операции.
  5. В открывшейся оснастке найдите стандартный шаблон User. Нажмите правой кнопкой на нём и выберите Duplicate Template. Если появится запрос о выборе версии шаблона укажите Windows Server 2003 Enterprise и нажмите Ok.
  6. Во вкладке Properties of New Tamplate укажите новое название шаблона. Например, Cross-signing.
  7. Снимите галочку с Publish certificate in Active Directory.
  8. Во вкладке Request Handling можете указать другой CSP, если, например, хотите хранить сертификат на смарт-карте (рекомендуется).
  9. В Issuance Requirements можете указать требование явного одобрения запроса со стороны администратора CA.
  10. Во вкладке Extensions выделите Application Policies и нажмите Edit.
  11. Удалите всё из списка, после чего нажмите Add и выберите Qualified Subordination. Нажмите Ok.
  12. Во вкладке Security удалите всех из разрешений, кроме глобальной или универсальной группы, которой будет разрешено энролить сертификаты для подписи запросов кросс-сертификации.
  13. Нажмите Ok для сохранения изменений и записи шаблона в Active Directory.

Теперь нужно добавить нужные шаблоны в выдачу на CA. Для этого:

  1. Войдите на сервер CA с именем Adatum-CA2 с правами Enterprise Admins.
  2. Нажмите Start, Administrative Tools и нажмите Certification Authority.
  3. Выделите секцию Certificate Templates и в контекстном меню выберите New –> Certificate Template to issue.
  4. В списке выделите только что созданный 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.

  1. Войдите на сервер CA с именем Adatum-CA2 с правами Enterprise Admins и администратора CA.
  2. Нажмите Start, Administrative Tools и нажмите Certification Authority.
  3. Выделите секцию Pending Requests, найдите в списке самый последний запрос и в контекстном меню выберите Issue. Предварительно вы можете убедиться, что запрос получился корректный и все данные в нём правильные.
  4. Перейдите в секцию 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.


Share this article:

Comments:

shss.wordpress.com

>Если первый метод достаточно прост и нетривиален Тут, видимо, опечатка: должно быть "тривиален" вместо "нетривиален".

shss.wordpress.com

>Для этого создайте текстовый файл с именем Policy.inf и следующим содержанием: Не совсем понятно где (на каком компьютере) нужно производить данное действие? (предполагаю, что на Adatum-CA2, верно?) >В открывшемся диалоговом окне укажите файл сертификата Contoso-CA2 и нажмите Open. Во втором диалоговом окне укажите созданный файл policy.inf и нажмите Open. После чего появится окно выбора сертификата подписи. После указания сертификата подписи нажмите Ok и укажите путь размещения и имя запроса сертификата Из данной фразы мне не понятно, что есть такое "сертификат подписи" и где его можно раздобыть?

Vadims Podāns

> Тут, видимо, опечатка: должно быть "тривиален" вместо "нетривиален". ага, опечатался. > Не совсем понятно где (на каком компьютере) нужно производить данное действие? (предполагаю, что на Adatum-CA2, верно?) по большому счёту — всё равно на каком. Можно даже на рабочей станции администратора с установленным RSAT. > Из данной фразы мне не понятно, что есть такое "сертификат подписи" и где его можно раздобыть? сертификат на основе шаблона cross-signing.

kf.livejournal.com

Вадимс, получается, что кросс-сертификация не позволяет избежать необходимости распространять новый корневой сертификат на клиентов?

Vadims Podāns

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

Comments are closed.