среда, 7 апреля 2010 г.

Трехуровневая иерархия центра сертификации

     Стала передо мной задача, поднять сервер сертификации на предприятии. После долгого гугления наткнулась на статью про трехуровневую структуру центра сертификации и решила ее построить.
     Вот цитата из статьи :
   "Почему при построении центра сертификации (Certificate Authority, CA) следует использовать трехуровневую иерархию, а не ограничиться, скажем, двумя или одним уровнем иерархии.Во-первых, корневой CA должен выдавать сертификаты исключительно и только промежуточным CA. Правомочность всех остальных сертификатов в цепочке сертификации зависит от сохранности и целостности корневого сертификата. Если закрытый ключ корневого сертификата потерян, украден, поврежден или скомпрометирован любым другим способом, все остальные сертификаты в цепочке сертификации становятся просто бесполезными. Создавая иерархическую систему сертификации, вы получаете возможность разместить корневой CA вне общей сети и обеспечить его защиту на физическом уровне. Во-вторых, благодаря использованию промежуточных CA можно применять различные политики сертификации для разных групп пользователей. Применение различных серверов CA может оказаться полезным, например, в случае работы в удаленных географических регионах с какими-либо ограничениями в областях бизнеса, управления и законодательной базы. Некоторые регионы имеют более высокие политические риски. Когда CA выдает сертификат, CA задает срок действия сертификата. Если существует риск компрометации сертификата или, что еще хуже, риск компрометации CA, использование сертификатов с более коротким сроком действия может быть предпочтительным. Построение архитектуры с несколькими уровнями промежуточных CA позволяет гибко управлять сроком действия сертификатов в разных странах в различных частях света. И наконец, использование достаточно числа выпускающих CA позволяет распределить нагрузку при необходимости обработки большого количества сертификатов."@Джозеф Нойбауэр

     Что входит в мою трехуровневую структуру:
1. Изолированный сервер сертификации. Он будет недоступен по сети.
2. "Корневой" центр сертификации предприятия (На самом деле он подчиненные сервер, но для нас он будет корневым и будет выдавать только сертификаты для подчиненных серверов)
3. Выдающий сервер сертификации предприятия.
Рассмотрим подробнее как установить и настроить каждый центр сертификации.
Для устновки и настройки изолированного сервера сертификации нам нужен файл настроек CApolicy.inf . Более подробно о синтаксисе файла можно посмотреть тут http://technet.microsoft.com/ru-ru/library/cc728279%28WS.10%29.aspx
     Текст файла должен быть следующим

[Version]
Signature="$Windows NT$"
[PolicyStatementExtension]
Policies=LegalPolicy
[LegalPolicy]
OID=1.2.3.4.5.6.7.8.9.x
NOTICE=Certificate Practice Statement
URL="http://webserver/LegalPolicy/rootcps.htm"
[certsrv_server]
renewalkeylength=4096
RenewalValidityPeriodUnits=20
RenewalValidityPeriod=years
CRLPeriodUnits=
CRLPeriod=
CRLDeltaPeriodUnits=
CRLDeltaPeriod=days
[CRLDistributionPoint]
Empty=True
[AuthorityInformationAccess]
Empty=True

     Где webserver Полное FQDN имя контроллера домена на котором будет поднят корневой центр сертификации предприятия
1.2.3.4.5.6.7.8.9.x - x последний октет Ip адреса
Созданный файл помещаем в корень %SystemRoot% c именем CApolicy.inf

     Установим службу сертификации, она является компонентом системы. Для ее установки переходим в Панель управления ->; Установка и удаление программ ->; Компоненты Windows и выбираем "Службы сертификации." Система выдаст нам сообщение о том что после установки данной службы компьютер нельзя переименовывать.
Выбираем - Изолированный корневой ЦС и обязательно ставим галочку "Измененные параметры создания пары ключей и сертификата цс". Далее :-)
Выбираем поставщика CPS, алгоритм хеширования и длину ключа. Я воспользовалась рекомендациями Microsoft и выбрала следующие параметры:
• CSP: Microsoft Strong Cryptographic Provider
• Алгоритм хеширования: SHA-1
• Длинна ключа: 4096

И опять наше любимое Далее.

     Теперь заполняем сведенья о нашем центре сертификации:
Общее имя для ЦС - netbios имя нашего компьютера. Пусть будет Offline
Суффикс различающегося имени - это полное имя нашего леса.
И срок действия, думаю лет 20 нам хватит.
На изолированный сервер нет необходимости устанавливать службу iss, так как включать его в сеть мы не будем.
Все остальное уставляем по умолчанию.

    После установки изолированного центра сертификации необходимо правильно сконфигурировать CDP и AIA для корневого центра сертификации. Для этого в начале воспользуемся скриптом любезно предоставленным нам компанией Microsoft изменяющим свойства СDP и AIA

:: The following variables may be used when defining kadap
:: and AIA URLs.
:: %1 = SERVERDNSNAME
:: %2 = SERVERSHORTNAME
:: %3 = SANITIZEDCANAME
:: %4 = CERTFILENAMESUFFIX
:: %5 = DOMAINDN
:: %6 = CONFIGDN
:: %7 = SANITIZEDCANAMEHASH
:: %8 = CRLFILENAMESUFFIX
:: %9 = CRLDELTAFILENAMESUFFIX
:: %10 = DSCRLATTRIBUTE
:: %11 = DSCACERTATTRIBUTE
:: %12 = DSUSERCERTATTRIBUTE
:: %13 = DSKRACERTATTRIBUTE
:: %14 = DSCROSSCERTPAIRATTRIBUTE
:: Each URL is prefaced by a value that indicates which
:: checkboxes are enabled for each distinct URL. The value is
:: the sum of the values assigned to each individual checkbox
:: The following values are assigned for the CRL check boxes
:: ServerPublish = 1
:: AddtoCertCDP = 2
:: AddtoFreshestCRK = 4
:: AddtoCRLCDP = 8
:: ServerPublishDelta = 64
:: The following values are assigned for the AIA check boxes
:: ServerPublish = 1
:: AddtoCertCDP = 2
:: AddtoCertOCSP = 32
::Declare Configuration NC
certutil -setreg ca\DSConfigDN CN=Configuration,forestname
::Modify the CDP Extension URLs
certutil -setreg CA\CRLPublicationURLs "1:%WINDIR%\system32\CertSrv\CertEnroll\%%3%%8%%9.crl\n10:LDAP:///CN=%%7%%8,CN=%%2,CN=CDP,CN=Public Key Services,CN=Services,%%6%%10\n2:http://webserver/CertData/%%3%%8%%9.crl"
::Modify the AIA Extension URLs
certutil -setreg CA\CACertPublicationURLs "1:%WINDIR%\system32\CertSrv\CertEnroll\%%1_%%3%%4.crt\n2:LDAP:///CN=%%7,CN=AIA,CN=Public Key Services,CN=Services,%%6%%11\n2:http://webserver/CertData/%%1_%%3%%4.crt"
::Restart Certificate Services
net stop certsvc & net start certsvc

     Нам необходимо изменить следующий текст:
- Webserver заменить на полноке FQDN имя контроллера домена
- ForestNam заменить на LDAP имя нашего леса
  После выполнения скрипта необходимо пере опубликовать список отозванных сертификатов.

    Перед поднятием корневого центра сертификации нам необходимо установить и настроить IIS сервер. А также опубликовать CDP и AIA в домене. Как устанавливать роль сервера приложений, частью которой является ISS я описывать не буду. Это достаточно простая задача. После того как у нас будет рабочий iss сервер нам необходим внести некоторые изменения в сайт по умолчанию.
1. Создаем папку LegalPolicy в Inetpub\wwwroot.
2. В ней размещаем маленький htm файл с именем rootcps.htm (если помните выше в файл CApolicy.inf мы добавляли на него ссылку)
Шаблон этого файла там также любезно предоставила компания Microsoft
html>
    head>
    meta http-equiv="Content-Language" content="en-us">
    meta name="GENERATOR" content="Microsoft FrontPage 5.0">
    meta name="ProgId" content="FrontPage.Editor.Document">
    meta http-equiv="Content-Type" content="text/html; <1252">
    title>Certificate Practice Statement
    /head>
    body text="#800080" bgcolor="#FFFFFF">
    h1>Certificate Practice Statementp>Welcome to the certificate practice statement for the offline root CA /body>
    /html>

3. Далее в папку CertData, созданную в Inetpub\wwwroot, нам необходимо скопировать файлы с изолированного центра сертификации из папки \system32\Certsrv\Certenroll
4. Публикуем сертификат и crl в нашем домене. Для этого воспользуемся командной строкой. Переходим в папку \inetpub\wwwroot\Certdata и выполняем команды
certutil -dspublish -f Computer.crl RootCA. certutil -dspublish -f Computer_Computer.crt RootCA, где Computer - это имя NetBios имя компьютера нашего изолированного центра сертификации.
Не забываем сделать обновление групповой политик gpupdate /force

     Приступаем к самому вкусному. Подъем и настройка корневого центра сертификации.
1. Убедимся что изолированный центр сертификации отключен от сети.
2. Устанавливаем компонент "Службы сертификации" в роли подчиненного сервера предприятия.
- "Общего имения для ЦС" и срока действия. Общее имя должно быть в формате DomainCA, где Domain - Netbios имя вашего домена.
- Сохраняем запрос на сертификат в файл.
     Вовремя настройки систему уведомит что служба ISS будет временно для конфигурации.
А теперь как в добрые старые времена, берем съемный носитель, копируем на него файлик с запросом и идем к изолированному серверу сертификатов получать сертификат.
Для этого в консоле управления Центром сертификатов, в подменю "Все задачи" выбираем "Выдать новый запрос" и в открывшемся окне указываем наш файл запросов. Теперь переходим в "Запросы в ожидании" и выдаем сертификат. После выдачи сертификата таким же дедовским методом на сменном носителе его надо перенести назад и установить на наш подчиненный сервер.
 Для сохранения сертификата необходимо его открыть, перейти на вкладку "Состав" и выбрать "Копировать в файл" . Формат экспортируемого файла указываем как Cryptographic Message Syntax Standard - PKCS #7 Certificates (.P7B), и ставим галочку
"Include all certificates in the certification path if possible".
Для установки сертификата необходимо в консоле управления Центром сертификатов, в подменю "Все задачи" выбираем установить сертификат. Если у вас возникает ошибка при инсталляции сертификата ссылающаяся, скорее всего вы не правильно опубликовали CPD, AIA. Повторная процедура перепубликации решает эту проблему.
Установка третьего - выдающего центра сертификации уже намного проще. У нас есть сеть и мы автоматом можем получить сертификат на наш центр.
Также рекомендую удалить все шаблоны, кроме Шаблона подченненого центра сертификации, с нашего "Корневго" центра сертификации.
Запрос сертификатов осуществляется по сслыке http://CertServerName/Certsrv/



1 комментарий:

Анонимно комментирует...

Обязательно прочту до конца, а так тема интересная, интересная.