Главная Security, Windows, Новое Внедрение Инфраструктуры Открытых Ключей на основе Windows Server. Установка и настройка издающего центра сертификации
  • Внедрение Инфраструктуры Открытых Ключей на основе Windows Server. Установка и настройка издающего центра сертификации

     

    Степан Москалев

    Леонид Шапиро

     

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

     

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

    [Version]

    Signature=”$Windows NT$”

    [PolicyStatementExtension]

    Policies=InternalPolicy

    [InternalPolicy]

    OID=1.2.3.4.1455.67.89.5

    URL=http://pki.nwtraders.msft/PKI/cps.txt

    [certsrv_server]

    RenewalKeyLength=2048

    RenewalValidityPeriodUnits=5

    RenewalValidityPeriod=Years

    CRLPeriodUnits=1

    CRLPeriod=Weeks

    CRLOverlapUnits=1

    CRLOverlapPeriod=Days

    CRLDeltaPeriodUnits=1

    CRLDeltaPeriod=Days

    LoadDefaultTemplates=0

    AlternateSignatureAlgorithm=1

     

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

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

    Install-AdcsCertificationAuthority –CAType EnterpriseSubordinateCA –CACommonName “IssuingCA01” –KeyLength 2048 –HashAlgorithmName SHA256 –CryptoProviderName “RSA#Microsoft Software Key Storage Provider”

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

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

    Certreq -submit C:\test\ICA01.Nwtraders.msft_IssuingCA01.req, где test папка, в которой был сохранен файл запроса.

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

    certutil -resubmit 2

    certreq –Retrieve 2 C:\test\ICA01.crt

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

    certutil -installCert C:\test\ICA01.crt [5]

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

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

    certutil –addstore –f root C:\test\RootCA_ROOTCA.crt

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

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

    Start-Service CertSvc

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

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

    certutil –dspublish –f C:\test\ROOTCA_ROOTCA.crt – публикация сертификата;

    certutil –dspublish –f C:\test\ROOTCA.crl ROOTCA – публикация списка отзыва сертификатов;

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

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

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

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

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

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

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

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

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

    $crllist = Get-CACrlDistributionPoint

    foreach ($crl in $crllist) { Remove-CACrlDistributionPoint $crl.uri -Force }

     

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

    Add-CACRLDistributionPoint -Uri C:\Windows\System32\CertSrv\CertEnroll\%3%8%9.crl -PublishToServer -PublishDeltaToServer -Force

    Add-CACRLDistributionPoint -Uri http://pki.nwtraders.msft/PKI/%3%8%9.crl -AddToCertificateCDP -AddToFreshestCrl -Force [6]

    Add-CACRLDistributionPoint -Uri “ldap:///CN=%7%8,CN=%2,CN=CDP,CN=Public Key Services,CN=Services,%6%10” -PublishToServer -AddToCrlCdp -AddToFreshestCrl -AddToCertificateCDP -PublishDeltaToServer -Force [6]

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

     

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

    Add-CACRLDistributionPoint -Uri \\pki.nwtraders.msft\pki\%3%8%9.crl -PublishToServer -PublishDeltaToServer -Force

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

     

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

    $aialist = Get-CAAuthorityInformationAccess

    foreach ($aia in $aialist) { Remove-CAAuthorityInformationAccess $aia.uri -Force }

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

    certutil -setreg CA\CACertPublicationURLs “1:C:\Windows\system32\CertSrv\CertEnroll\%3%4.crt\n1:\\pki.nwtraders.msft\pki\%3%4.crt”

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

    Add-CAAuthorityInformationAccess http://pki.nwtraders.msft/PKI/%3%4.crt -AddToCertificateAia -Force

    Add-CAAuthorityInformationAccess “ldap:///CN=%7,CN=AIA,CN=Public Key Services,CN=Services,%6%11” -AddToCertificateAia -Force

     

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

    certutil -setreg CA\ValidityPeriodUnits 5

    certutil -setreg CA\ValidityPeriod “Years”

    certutil -setreg CA\CRLPeriodUnits 1

    certutil -setreg CA\CRLPeriod “Weeks”

    certutil -setreg CA\CRLOverlapUnits 1

    certutil -setreg CA\CRLOverlapPeriod “Days”

    certutil -setreg CA\CRLDeltaPeriodUnits 1

    certutil -setreg CA\CRLDeltaPeriod “Days”

     

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

    certutil -setreg CA\AuditFilter 127

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

    Restart-Service CertSvc

     

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

    certutil -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)

    Продолжение следует…

     

    Литература

    [1] Prepare the CAPolicy.inf File – https://technet.microsoft.com/en-us/
    library/jj125373(v=ws.11).aspx.

    [2] Шапиро Л. Внедрение инфраструктуры открытых ключей
    на основе Windows Server 2016. Часть 1. Предварительный
    этап. / «Системный администратор», № 1-2, 2018 г. – С. 23-27.
    URL: http://samag.ru/archive/article/3576.

    [3] Утилита Certreq – https://docs.microsoft.com/en-us/windowsserver/
    administration/windows-commands/certreq_1.

    [4] PowerShell Documentation – https://docs.microsoft.com/en-us/
    powershell/.

    [5] Certutil – https://docs.microsoft.com/en-us/windows-server/
    administration/windows-commands/certutil.

    [6] Certification Authority Guidance – https://docs.microsoft.com/
    en-us/previous-versions/windows/it-pro/windows-server-2012-R2-
    and-2012/hh831574(v=ws.11).

    [7] PKI Design Considerations: Certificate Revocation
    and CRL Publishing Strategies – https://blogs.technet.
    microsoft.com/xdot509/2012/11/26/pki-design-considerationscertificate-
    revocation-and-crl-publishing-strategies/.

    [8] Москалев С., Шапиро Л. Инфраструктура открытых ключей
    в Windows Server 2016. Часть 2. RootCA. //«Системный адми-
    нистратор», № 3, 2018 г. – С. 16-19. URL: http://samag.ru/archive/
    article/3605.http://samag.ru/archive/article/3605