Windows server 2016 capolicy inf

Инфраструктура открытых ключей в Windows Server 2016. Часть 3. Issuing CA

Архив номеров / 2018 / Выпуск №7-8 (188-189) / Инфраструктура открытых ключей в Windows Server 2016. Часть 3. Issuing CA

СТЕПАН МОСКАЛЕВ, инженер ИТ-систем, MCSE, MCSE:S, MCSE:M, MCITP EA, MCITP EMA, HP AIS, msv121@mail.ru

ЛЕОНИД ШАПИРО, архитектор ИТ-систем, MVP, MCT, MCSE, MCITP:EA, MCSE:S, MCSE:M, shapiro_leonid@yahoo.com

Инфраструктура открытых ключей
в Windows Server 2016. Часть 3. Issuing CA

В третьей части нашего цикла мы рассмотрим развертывание издающего удостоверяющего центра в двухуровневой иерархии

В отличие от корневого этот сервер должен быть постоянно доступен клиентам, причем здесь мы имеем в виду не только возможность получения сертификатов, но и, что важнее, их отзыва при компрометации. Точно так же, как и с корневым УЦ, перед установкой понадобится подготовить файл capolicy.inf [1] и разместить его в правильном месте [2].

Пример структуры capolicy.inf может выглядеть так:

Познакомиться с синтаксисом файла capolicy.inf можно в первой статье этого цикла [2].

На следующем шаге можно переходить к установке самого сервиса Active Directory Certificate Services. Установка может быть выполнена как с помощью графического интерфейса, так и с помощью команд PowerShell [3]. Второй вариант обычно проще и занимает меньше времени.

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

С точки зрения безопасности следует использовать внешний защищенный носитель информации для обмена и не подключать корневой центр сертификации к сети. Непосредственно для запроса сертификата можно воспользоваться утилитой certreq [4] уже на самом корневом центре сертификации.

где test – папка, в которой был сохранен файл запроса.

Далее запрос одобряется администратором и выдается сертификат для подчиненного центра сертификации.

После этого полученный сертификат переносится на издающий УЦ и устанавливается на нем [5].

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

Первое – опубликовать сертификат корневого центра сертификации на издающем центре сертификатов ICA01, для чего выполнить следующую команду:

Второе – обеспечить доступность CRL корневого центра и его сертификата хотя бы по одному пути, указанному в сертификате.

После этого службу надо запустить:

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

Поскольку мы еще не проводили публикацию сертификата корневого УЦ и его списка отзыва в службе каталога Active Directory Domain Services, это можно будет сделать теперь, для чего выполняются команды:

ROOTCA в данной команде это имя центра сертификации.

На этом заканчивается лишь предварительный этап установки издающего УЦ, следующий шаг – настройка его параметров.

Здесь также рекомендуется пользоваться сценариями настройки для уменьшения возможных ошибок при использовании графического интерфейса.

Удалите настройки CrlDistributionPoint, заданные по умолчанию.

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

Разумное решение – использование именно внешнего веб-сервера клиентами для получения сертификатов и списков отзыва.

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

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

Удаление путей можно выполнить с помощью PowerShell:

Для добавления новых путей публикации CrlDistribution-Point выполните следующие команды:

Если с основными компонентами приведенных команд все понятно, то ряд параметров под знаком % может вызывать вопросы. На самом деле здесь нет ничего сложного, и познакомиться с тем, что обозначает каждая из переменных, можно по приведенной ссылке [6].

Для обеспечения автоматической публикации CRL:

По сравнению с корневым центром сертификатов добавляется переменная %9 ( ), так как в ROOTCA список DeltaCRL отсутствует [7].

То же самое следует проделать для AIA-путей, то есть надо удалить настройки CAAuthorityInformationAccess, заданные по умолчанию:

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

Добавить пути публикации http и ldap при помощи команд PowerShell.

Для настройки срока действия сертификата и периодичности публикации CRL используется команда certutil, мы подробно рассмотрели постустановочную настройку на примере корневого центра сертификации в предыдущей статье [7].

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

Перезагрузите службу сертификатов:

Опубликуйте списки CRL:

Далее нужно скопировать сертификат издающего центра сертификации в центр распространения (Distribution Point).

Установка и настройка издающего центра сертификации на этом завершена, нам остается проверить, все ли прошло успешно. Для этого используется несколько инструментов.

Графическая консоль сервера сертификатов позволит удостовериться в том, что пути к спискам отзыва и самим сертификатам УЦ изменены, параметры аудита заданы. Также следует удостовериться, что клиенты получают доступ по указанным путям и могут загрузить сертификаты и списки отзыва. В нашем примере это проверка HTTP-пути http://pki.nwtraders.msft/PKI/.

Дополнительно можно обратиться к реестру в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\IssuingCA01\, где IssuingCA01 – это введенное нами при установке имя УЦ, и посмотреть значение ключей реестра:

  • CRLPublicationURLs
  • CACertPublicationURLs
  • ValidityPeriodUnits
  • ValidityPeriod
  • CRLPeriodUnits
  • CRLPeriod
  • CRLOverlapUnits
  • CRLOverlapPeriod
  • CRLDeltaPeriodUnits
  • CRLDeltaPeriod
  • AuditFilter
  • DSConfigDN
  • DSDomainDN

Наконец, воспользоваться консолью EnterprisePKI, запустив из командной строки утилиту pkiview.msc, в столбце Status для всех путей должен быть статус OK.

Кроме этого, можно воспользоваться ADSI Edit для проверки информации в службе каталога.

Перейдите по пути CN=Public Key Services,CN=Services,CN=Configuration,DC=Nwtraders,DC=msft.

  • AIA – содержит сертификаты центров сертификации, которые клиенты могут извлекать при проверке цепочки сертификатов.
  • CDP – содержит CRL (базовый и дельта), которые опубликованы в AD.
  • Certificate Templates – cодержит шаблоны сертификатов.
  • Certification Authorities – cодержит сертификаты корневых центров сертификации (Root CA для нашего случая).
  • Enrollment Services – cодержит сертификаты центров сертификации, которые могут выдавать сертификаты в данной службе каталогов.
  • KRA – содержит сертификаты (key recovery agents) агентов восстановления.
  • OID – содержит информацию о OID, используемых службой сертификации (Certification Authorities).

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

В следующей статье мы поговорим о работе с центрами распространения (Distribution Points).

Ключевые слова: центр сертификации, служба сертификации, реестры, списки отзыва.

Инфраструктура открытых ключей в Windows Server 2016. Часть 1. Предварительный этап

Архив номеров / 2018 / Выпуск №1-2 (182-183) / Инфраструктура открытых ключей в Windows Server 2016. Часть 1. Предварительный этап

Рубрика: Администрирование / ИТ-инфраструктура

ЛЕОНИД ШАПИРО, архитектор ИТ-систем, MVP, MCT, MCSE, MCITP:EA, MCSE:S, MCSE:M, shapiro_leonid@yahoo.com

Инфраструктура открытых ключей
в Windows Server 2016. Часть 1. Предварительный этап

Внедрение собственной инфраструктуры открытых ключей часто становится одной из задач, которую приходится решать ИТ-отделам предприятия

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

Как бы там ни было, задача внедрения и поддержания собственных инфраструктур осталась, а раз так, то стоит разобраться с особенностями ее внедрения. Впрочем, прежде чем говорить о внедрении, имеет смысл обсудить вопросы правильного использования и проектирования. Журнал не раз затрагивал эту тему в своих публикациях, поэтому мы можем просто сослаться на ранее опубликованную статью, которая поможет читателю ознакомиться с этой темой [1]. Великолепным источником является руководство Брайана Комара [3], которое поможет получить глубокие знания предмета.

Кроме того, разумно ознакомиться и с первоисточником, если мы говорим о внедрении решения на основе PKI Microsoft, так как разработчик предлагает полное руководство по проектированию [2].

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

Типовой сценарий

Пусть у нас есть организация, имеющая два основных центра обработки данных и несколько филиалов. Современные тенденции ведения бизнеса предполагают наличие не только стационарных пользователей, но и мобильных. Многие сотрудники компании применяют в своей работе не только обычные рабочие места, но и мобильные устройства. Предполагается необходимость взаимодействия с партнерами и заказчиками, с предоставлением им доступа к некоторым ресурсам компании. Служба каталога предприятия традиционно использует службу каталога на основе Microsoft Active Directory Domain Services. Структурная схема типового ЦОД предприятия может выглядеть так, как это показано на рис. 1. Конечно, говоря о центре обработки данных, мы делаем некоторое преувеличение, скорее здесь мы можем говорить о штаб-квартире и крупных филиалах. Поддержка собственного дата-центра в настоящем понимании этого термина оказывается под силу далеко не всем, но в некотором приближении будем считать, что говорим о ЦОД.

Рисунок 1. Структурная схема типового ЦОД предприятия

Внедрение корпоративной PKI обусловлено ростом потребности в обеспечении безопасности внутри предприятия. Подобное краткое описание нередко оказывается типовой историей для многих компаний. Так как же внедрить PKI для такой организации?

Как я уже упоминал выше, с проектированием решения можно познакомиться в статьях [1] и [2]. Обычно в подобной ситуации мы будем говорить о двухуровневой иерархии, состоящей из корневого отключенного от сети центра сертификации (Stand-Alone Root CA) и подчиненного издающего корпоративного центра сертификации. Не исключено, а скорее всего обязательно будет присутствовать потребность в использовании и публичных удостоверяющих центров, например, для обеспечения возможности работы внешних клиентов компании.

Разумеется, возможны и другие варианты, которые мы обсудим в этом цикле статей, но в качестве, скажем так, типового и наиболее часто встречающегося имеет смысл рассматривать именно этот. Более сложные иерархии с использованием дополнительных уровней иерархии с использованием промежуточных серверов политик Policy CA встречаются только для крупных компаний, где требования к политикам сертификатов могут варьироваться, что и приводит к усложнению структуры. Таким образом, типовая структурная схема может выглядеть так, как это показано на рис. 2.

Рисунок 2. Типовая структурная схема

Предварительный этап

Этап подготовки развертывания, с точки зрения практических аспектов, будет состоять из настройки точек распространения (Distribution Point), добавления дополнительной записи на сервере DNS и подготовки файлов capolicy.inf, определяющих начальную настройку и параметры работы серверов сертификатов. Наиболее часто используемыми точками распространения являются HTTP и LDAP. Первый вариант обусловлен его универсальностью для любого типа клиента, второй – удобством поиска и доступа для типового клиента Active Directory. Соответственно, администратор сталкивается с задачами:

  • настройки места хранения файлов сертификатов, списка отзыва и заявления поставщика, прав доступа на этот или эти ресурсы;
  • установки и настройки сервера веб для выполнения роли Distribution Point для PKI;
  • добавления специальной записи на корпоративном DNS-сервере, которая обеспечит поиск необходимых ресурсов;
  • обеспечения отказоустойчивости и доступности как самих издающих серверов сертификатов, так и точек распространения, причем, говоря о них, не следует забывать о необходимости своевременной синхронизации данных между веб-серверами, выполняющими эту роль. Например, публикация нового CRL-файла означает необходимость предоставления доступа к нему с помощью любого сервера веб-фермы, выполняющего роль Distribution Point, но к этому мы еще вернемся несколько позже.

Администратору необходимо создать каталог для хранения вышеуказанных файлов и предоставить к нему доступ требуемым группам пользователей, то есть если предполагается «внутреннее» использование, то выбираются соответствующие группы, обычно речь идет о группе Users, поскольку, как правило, работают с сертификатами все пользователи компании, если же мы говорим о необходимости работы внешних пользователей, то придется использовать группу everyone.

Кроме того, встроенной группе Cert Publishers [4] необходимо предоставить права для изменений внутри этой папки. Это требуется для правильного подхода при построении строгой ролевой модели.

На веб-сервере создается виртуальный каталог, указывающий на соответствующий ресурс в хранилище. Необходимо удостовериться в том, что активна опция Directory Browsing (см. рис. 3), и если предусматривается использование разностных списков отзыва (Delta CRL), которые в имени файлов используют символ «+», то потребуется обеспечить так называемый Double Escaping, что также подразумевает дополнительную настройку на веб-сервере (см. рис. 4).

Рисунок 3. Активация опции Directory Browsing

Рисунок 4. Дополнительная настройка на веб-сервере

Наконец, необходимо создать на сервере DNS запись CNAME [5], которая позволит клиенту находить требуемый ресурс (см. рис. 5).

Рисунок 5. Создание на сервере DNS записи CNAME

Следующий шаг предварительного этапа настройки – подготовка файла начальной конфигурации удостоверяющего центра – capolicy.inf [6].

Файл capolicy.inf

Если нас не устраивают параметры по умолчанию, а обычно они нас не устраивают, нам нужно создать файл capolicy.inf на всех удостоверяющих центрах еще до развертывания самой службы сервера сертификатов. Именно этот файл и будет определять параметры начальной настройки, а также параметры поведения при обновлении сертификата самого сервера сертификатов. Этот файл обязательно должен быть размещен в папке %Systemroot% (обычно это C:\Windows) еще до установки сервиса. Использование иного имени или места размещения приведет к игнорированию этого файла, и сервер сертификатов будет установлен с параметрами «по умолчанию».

Рассмотрим структуру и внутреннее содержание файла. Capolicy.inf состоит из нескольких разделов.

  • Version – семейство используемой операционной системы удостоверяющего центра
  • PolicyStatementExtension – заявление поставщика
  • BasicConstrainsExtension – ограничение глубины иерархии УЦ
  • EnhancedKeyUsageExtension – ограничение на выдаваемые типы сертификатов
  • Certsrv_server – параметры обновления сертификата, настройки сертификата УЦ, параметры обновления и срок жизни сертификата, период публикации списка отзыва

Version

Первый раздел [Version] содержит одну строку, говорящую о том, что используется формат Windows NT, он-то нам и нужен, если мы базируемся на Windows Server. Эта строка будет всегда присутствовать в файле, и неважно какой УЦ (корневой или подчиненный) мы разворачиваем.

PolicyStatementExtention

В этом разделе указан путь к заявлению поставщика (Certification Practice Statement или CPS) и определены политики, которые служат для безопасности.

Certification Practice Statement – просто документ, который можно загрузить по заданной ссылке, чтобы с ними ознакомиться. В нашем примере это файл cps.txt.

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

Внутри политики содержится Object identifier (OID). Мы не будем останавливаться на этом подробно. С OID вы можете познакомиться по следующей ссылке: https://www.networkworld.com/article/2231566/microsoft-subnet/obtaining-an-oid-for-a-certificate-issuing-policy—capolicy-inf—-.html.

EnhancedKeyUsageExtension

В разделе EnhancedKeyUsageExtension можно ограничить применимость сертификатов, издаваемых центром сертификации. Пример такого раздела представлен ниже.

Перечисляется, какие сертификаты может выдавать данный центр сертификации.

В сертификате это выглядит так, как это представлено на рис. 6.

Рисунок 6. Пример сертификата

Дополнительную информацию по данному разделу можно найти по ссылке: https://technet.microsoft.com/en-us/library/cc725621%28v=ws.10%29.aspx?f=255&MSPPError=-2147217396 описание Application Policies.

Конечно, этот раздел не обязателен, по умолчанию центр сертификации может выпускать любые типы сертификатов.

BasicConstraintsExtension

В разделе BasicConstraintsExtension можно ограничить глубину иерархии центров сертификации, так, например, раздел может иметь следующий вид:

Это означает, что после этого центра сертификации может быть только один уровень подчиненных. Если ограничение иерархии не требуется, то раздел BasicConstraintsExtension должен иметь вид:

Не стоит ограничивать глубину иерархии удостоверяющих центров на корневом, поскольку это приводит к снижению гибкости инфраструктуры. Время жизни инфраструктуры обычно весьма значительно, и за этот период многое может измениться. В трехуровневой иерархии центров ее глубина может быть ограничена, например, на втором уровне, и, если даже раздел BasicConstraintsExtension будет отсутствовать в файле УЦ capolicy.inf третьего уровня (издающем), выдать сертификат еще одному УЦ с него будет нельзя. При попытке обработать запрос нижестоящего центра сертификации на получение им сертификата будет выдаваться сообщение об ошибке.

В разделе certsrv_server представлены параметры сертификата самого удостоверяющего центра.

  • RenewalKeyLength=4096 – указатель размера ключа центра сертификации, в нашем случае 4096 бит.
  • RenewalValidityPeriodUnits=20 – устанавливается срок действия сертификата УЦ (20 лет).
  • RenewalValidityPeriod=Years – устанавливаются единицы измерения для параметра RenewalValidityPeriodUnits.
  • CRLPeriodUnits=26 – устанавливается периодичность публикации CRL-сертификата УЦ (в представленном примере 26 недель).
  • CRLPeriod=Weeks – устанавливаются единицы измерения для параметра CRLPeriodUnits.
  • CRLOverlapUnits=2 – устанавливается время, в течение которого CRL еще действительны, после наступления момента публикации следующего CRL. Дополнительное время действия CRL, а следовательно, валидности сертификата.
  • CRLOverlapPeriod=Weeks – устанавливаются единицы измерения для параметра CRLOverlapUnit.
  • CRLDeltaPeriodUnits=0 – устанавливается периодичность публикации Delta CRL, 0 означает, что публикация производиться не будет.
  • CRLDeltaPeriod=Hours – устанавливаются единицы измерения для параметра CRLDeltaPeriodUnits
  • LoadDefaultTemplates=0 – 0 означает, что не нужно производить публикацию шаблонов сертификатов, а следовательно, не будет производиться выдача сертификатов на основе этих шаблонов (в том числе автоматическая).
  • AlternateSignatureAlgorithm=1 – настройка УЦ для включения улучшенного алгоритма шифрования, включение поддержки стандарта PKCS#1 V2.1 [7], используемого при подписи сертификата и создании запросов. Нужно учитывать, что данный стандарт не поддерживается старыми операционными системами, такими как Windows 2000, Windows XP, Windows Server 2003.

Ниже представлены примеры содержимого файлов capolicy.inf для двухуровневой архитектуры PKI корневого и издающего удостоверяющих центров

Корневой УЦ

Подчиненный издающий УЦ

  1. Шапиро Л. Проектирование инфраструктуры открытых ключей. Часть 1. Теоретические основы. // «Системный администратор», № 10, 2010 г. – С. 80-87. URL: http://samag.ru/archive/article/1132.
  2. Brian Komar Windows Server 2008 PKI and Certificate Security.
  3. Active Directory Certificate Services (AD CS) Public Key Infrastructure (PKI) Design Guide – https://social.technet.microsoft.com/wiki/contents/articles/7421.active-directory-certificate-services-ad-cs-public-key-infrastructure-pki-design-guide.aspx.
  4. Configure Certificate Publishing in Active Directory Domain Services – https://technet.microsoft.com/en-us/library/cc730861(v=ws.11).aspx.
  5. Add an Alias (CNAME) Resource Record to a Zone – https://technet.microsoft.com/en-us/library/cc772053(v=ws.11).aspx.
  6. Prepare the CAPolicy.inf File – https://technet.microsoft.com/en-us/library/jj125373(v=ws.11).aspx.
  7. Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1 – https://www.ietf.org/rfc/rfc3447.txt.

Ключевые слова: инфраструктура открытых ключей, Windows Server 2016.

Читайте также:  Flash player не будет для linux
Оцените статью
Рубрика: Администрирование / ИТ-инфраструктура