Хранилище сертификатов windows server

Данный материал является переводом оригинальной статьи «ATA Learning : Michael Soule : Manage Certs with Windows Certificate Manager and PowerShell».

Работа с сертификатами обычно является одной из тех дополнительных задач, которые вынужден брать на себя системный администратор Windows. Диспетчер Сертификатов Windows (Windows Certificate Manager) — это один из основных инструментов, который позволяет выполнять эту работу.

В этой статье мы рассмотрим работу с сертификатами применительно к операционной системе Windows. Если же вы хотите узнать больше о том, как работают сертификаты в целом, ознакомьтесь с сопутствующей статьей «Your Guide to X509 Certificates».

Понимание хранилищ сертификатов

В диспетчере сертификатов Windows все сертификаты находятся в логических хранилищах, называемых «хранилищами сертификатов». Хранилища сертификатов – это «корзины», в которых Windows хранит все сертификаты, которые в настоящее время установлены, и сертификат может находиться более чем в одном хранилище.

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

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

Иногда можно встретить хранилища сертификатов, называемые физическими или логическими хранилищами. Физические хранилища ссылаются на фактическую файловую систему или место в реестре, где хранятся разделы реестра и / или файл(ы). Логические хранилища — это динамические ссылки, которые ссылаются на одно или несколько физических хранилищ. С логическими хранилищами намного проще работать, чем с физическими хранилищами для наиболее распространенных случаев использования.

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

Сертификаты пользователей

Если вы хотите, чтобы сертификат использовался одним пользователем, то идеальным вариантом будет хранилище пользовательских сертификатов внутри Диспетчера сертификатов Windows. Это общий вариант использования процессов аутентификации на основе сертификатов, таких как проводной IEEE 802.1x.

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

Компьютерные сертификаты

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

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

Сертификаты компьютера находятся в кусте реестра локального компьютера и в подкаталогах \ProgramData. Сертификаты пользователя находятся в кусте реестра текущего пользователя и в подкаталогах \AppData. Ниже вы можете увидеть, где каждый тип хранилища находится в реестре и файловой системе.

Контекст Путь реестра Объяснение
User HKEY_CURRENT_USER
SOFTWARE\Microsoft\SystemCertificates\
Физическое хранилище для пользовательских открытых ключей
User HKEY_CURRENT_USER
SOFTWARE\Policies\Microsoft\SystemCertificates\
Физическое хранилище для пользовательских открытых ключей, установленных объектами групповой политики Active Directory (AD) (GPO)
Computer HKEY_LOCAL_MACHINE
SOFTWARE\Microsoft\SystemCertificates\
Физическое хранилище общедоступных ключей для всей машины
Computer HKEY_LOCAL_MACHINE
SOFTWARE\Microsoft\Cryptography\Services\
Физическое хранилище ключей, связанных с определенной службой
Computer HKEY_LOCAL_MACHINE
SOFTWARE\Policies\Microsoft\SystemCertificates\
Физическое хранилище открытых ключей для всей машины, установленных объектами групповой политики.
Computer HKEY_LOCAL_MACHINE
SOFTWARE\Microsoft\EnterpriseCertificates\
Физическое хранилище общедоступных ключей, установленных корпоративными контейнерами PKI в домене AD
Контекст Расположение файла Объяснение
User $env:APPDATA\Microsoft\SystemCertificates\ Физическое хранилище для пользовательских открытых ключей и указателей на закрытые ключи
User $env:APPDATA\Microsoft\Crypto\ Физическое хранилище для контейнеров закрытых ключей для конкретных пользователей
Computer $env:ProgramData\Microsoft\Crypto\ Физическое хранилище для контейнеров закрытых ключей для всей машины
Предварительные требования

В оставшейся части этой статьи вы найдете несколько примеров, демонстрирующих взаимодействие с хранилищами сертификатов Windows. Чтобы воспроизвести эти примеры, убедитесь, что выполняются следующие требования:

  • Windows Vista, Windows Server 2008 или более новая операционная система. В показанных примерах используется Windows 10 Корпоративная версии 1903.
  • Знакомство с PowerShell. Хотя это и не обязательно, этот язык будет использоваться для ссылки на сертификаты, где это необходимо. Все показанные примеры были созданы с помощью Windows PowerShell 5.1.
  • Вам не потребуется устанавливать какие-либо специальные сертификаты, но использование самозаверяющего сертификата полезно.
Управление сертификатами в Windows

В Windows есть три основных способа управления сертификатами:

  • Оснастка консоли управления Microsoft (MMC) сертификатов (certmgr.msc)
  • PowerShell
  • Инструмент командной строки certutil

В этой статье вы узнаете, как управлять сертификатами с помощью оснастки Certificates MMC и PowerShell. Если вы хотите узнать больше о том, как использовать certutil, ознакомьтесь с документацией Microsoft.

PowerShell против диспетчера сертификатов Windows

Поскольку в Windows можно управлять сертификатами несколькими способами, встаёт вопрос выбора, что лучше использовать — GUI (MMC) или командную строку с PowerShell.

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

Давайте сначала посмотрим, как обнаружить сертификаты, установленные в Windows, с помощью диспетчера сертификатов и PowerShell.

Использование диспетчера сертификатов Windows (certmgr.msc)

Чтобы просмотреть сертификаты с помощью MMC, откройте Диспетчер сертификатов: откройте меню «Пуск» и введите certmgr.msc. Это вызовет Windows Certificates MMC. Это начальное представление предоставит обзор всех логических хранилищ, отображаемых в левом окне.

На снимке экрана ниже видно, что выбрано логическое хранилище доверенных корневых центров сертификации

Windows Trusted Root Certification Authorities store

Просмотр физических хранилищ

По умолчанию Диспетчер сертификатов Windows не отображает физические хранилища. Чтобы показать их, в верхнем меню оснастки выбирайте «View» > «Options«. Затем вы увидите варианты отображения физических хранилищ сертификатов. Включение этого параметра упрощает определение конкретных путей в Windows.

Теперь вы можете видеть, что дополнительные контейнеры показаны в примере логического хранилища доверенных корневых центров сертификации, показанном ранее. Сертификаты по-прежнему сгруппированы относительно их логических хранилищ, но теперь вы можете увидеть физическое хранилище «Реестр».

Inspecting the physical cert stores

Проверка атрибутов в диспетчере сертификатов Windows

Есть много атрибутов сертификата, которые вы можете увидеть при просмотре их с помощью MMC. Например, вы, вероятно, захотите выбрать определенные сертификаты по их атрибутам. Самый простой способ сделать это — указать Serial Number сертификата или значение Thumbprint. Если сертификат был подписан центром сертификации (CA), при выдаче он будет иметь серийный номер. Thumbprint вычисляется каждый раз при просмотре сертификата.

Вы можете увидеть некоторые атрибуты сертификата, открыв его в MMC, как показано ниже.

Inspecting a Windows certificate

Следует отметить одну важную особенность — встроенные закрытые ключи. Сертификаты в Windows также могут иметь соответствующий закрытый ключ. Эти закрытые ключи хранятся в соответствующих физических хранилищах в виде зашифрованных файлов.

Чтобы быстро отличать сертификаты с соответствующим закрытым ключом и без него, посмотрите на значок сертификата. В Диспетчере сертификатов Windows, если значок просто выглядит как лист бумаги с лентой, соответствующий закрытый ключ отсутствует. Если у сертификата есть закрытый ключ, вы увидите ключ на значке MMC, и ключ в нижней части вкладки «Общие» при открытии сертификата

Certificate without an embedded private key (Сертификат без встроенного закрытого ключа)

Использование PowerShell по физическому хранилищу

Как и в случае с MMC, вы можете просматривать сертификаты и управлять ими с помощью PowerShell. Давайте сначала проверим сертификаты в их физических хранилищах (реестр и файловая система).

Используя PowerShell командлет Get-ChildItem, вы можете перечислить все ключи и значения внутри родительского пути в реестре. Приведенная ниже команда перечислит все сертификаты вошедшего в систему пользователя в логическом хранилище промежуточных центров сертификации.

Get-ChildItem -Path 'HKCU:\Software\Microsoft\SystemCertificates\CA\Certificates'

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

Results of the installed certificates from the example commands

Другое распространенное хранилище — это Personal store. Ваши сертификаты для этого хранилища находятся в файловой системе, а не в реестре. В следующих командах мы покажем эти различные физические пути и их цели.

Каждый файл в каталоге, возвращенный приведенной ниже командой, соответствует сертификату, установленному в личном хранилище текущего пользователя.

Get-ChildItem -Path $env:APPDATA\Microsoft\SystemCertificates\My\Certificates\

Каждый файл, возвращаемый в приведенной ниже команде, является ссылкой на объект для закрытого ключа, созданный поставщиком хранилища ключей (KSP). Имя файла соответствует идентификатору ключа субъекта сертификата. К каждому устанавливаемому вами закрытому ключу будет добавлен соответствующий файл.

Get-ChildItem -Path $env:APPDATA\Microsoft\SystemCertificates\My\Keys\

Каждый файл в каталоге, возвращаемый следующей командой, является уникальным контейнером для зашифрованного закрытого ключа, созданного KSP. Нет прямой связи между именем файла и сертификатом, но файл является целью указателя в предыдущей команде.

Get-ChildItem -Path $env:APPDATA\Microsoft\Crypto\Keys
Использование PowerShell по логическому хранилищу

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

PowerShell может получить доступ к логическим хранилищам Windows с помощью PSDrive-объекта «Cert:\«, который сопоставляет сертификаты с физическими хранилищами так же, как это делает MMC.

К сожалению, MMC и «Cert:» не маркируют логические хранилища одинаково. Ниже вы можете увидеть сравнительную таблицу общих хранилищ и их названий как в MMC, так и в «Cert:» PSDrive.

Cert: Certificates MMC
My Personal
Remote Desktop Remote Desktop
Root Trusted Root Certification Authorities
CA Intermediate Certification Authorities
AuthRoot Third-Party Root Certification Authorities
TrustedPublisher Trusted Publishers
Trust Enterprise Trust
UserDS Active Directory User Object
Выбор сертификатов

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

Для следующих примеров вам нужно начать с перечисления всех установленных сертификатов в хранилище корневого ЦС.

Get-ChildItem -Path 'Cert:\CurrentUser\Root\'

Возвращенные объекты будут объектами сертификатов, которые вы можете использовать в следующих примерах.

Общие расширения уже доступны как свойства объектов сертификата. В приведенном ниже примере вы используете Get-Member для вывода списка всех свойств возвращаемых объектов.

Get-ChildItem -Path 'Cert:\CurrentUser\Root\' | Get-Member -MemberType Properties

The properties available for the returned certificate objects

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

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

Покажем пример взаимодействия с свойствами типа ScriptProperty. В приведенной ниже команде вы извлекаете Key Usages.

((Get-ChildItem -Path 'Cert:\CurrentUser\Root\' | Select -First 1).Extensions | Where-Object {$_.Oid.FriendlyName -eq 'Key Usage'}).format($true)

Новая часть, которую мы вводим в приведенной выше команде, — это метод форматирования, который выполняет декодирование ASN.1. Вы передаете ему логическое значение (например, $true), чтобы определить, хотим ли мы, чтобы возвращаемый объект был однострочным или многострочным.

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

$thumb = "cdd4eeae6000ac7f40c3802c171e30148030c072"
Get-ChildItem -Path 'Cert:\CurrentUser\Root\' | Where-Object {$_.Thumbprint -eq $thumb}
Создание самозаверяющих (self-signed) сертификатов с помощью PowerShell

PowerShell может создавать самозаверяющие (self-signed) сертификаты с помощью командлета New-SelfSignedCertificate. Самозаверяющие сертификаты полезны для тестирования, поскольку они позволяют генерировать пару открытого и закрытого ключей без использования центра сертификации.

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

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

New-SelfSignedCertificate -Subject 'User-Test' -CertStoreLocation 'Cert:\CurrentUser\My'
New-SelfSignedCertificate -Subject 'Computer-Test' -CertStoreLocation 'Cert:\LocalMachine\My'

Использование самозаверяющих сертификатов для продуктивных сервисов не рекомендуется, поскольку не существует всех механизмов, основанных на доверии.

Импорт и экспорт сертификатов в MMC

Криптография с открытым ключом основана на широкой доступности открытого ключа. Учитывая это, вам нужны стандартные способы эффективного обмена сертификатами. Не менее важна безопасность ваших личных ключей. Хранение закрытых ключей на недоступных носителях или с материалами для аварийного восстановления — обычная практика для определенных закрытых ключей.

Оба они требуют способов хранения этих криптографических объектов в стандартных форматах. Экспорт предоставляет функции для сохранения этих объектов и обеспечения использования широко распространенных стандартных форматов файлов. Импорт позволяет вам переносить криптографические объекты в операционные системы Windows.

Экспорт сертификатов из MMC относительно прост. Чтобы экспортировать сертификат без закрытого ключа, щелкните сертификат в MMC, выберите меню «Все задачи», а затем «Экспорт».

Во время экспорта вам будет предложено указать формат файла, как показано ниже. Наиболее распространены варианты кодирования — DER или Base-64

Exporting a certificate with no private key or one that is marked as not exportable

Экспорт закрытых ключей

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

  • Вошедшая в систему учетная запись должна иметь разрешение на закрытый ключ (только для сертификатов компьютеров);
  • Закрытый ключ должен быть помечен как экспортируемый.

Чтобы проверить разрешения для закрытых ключей локального компьютера, вы можете выбрать сертификат с закрытым ключом, выбрать «Все задачи» и «Управление закрытыми ключами» в MMC «Сертификаты». В открывшемся диалоговом окне отображаются записи управления доступом для закрытых ключей.

Когда выше обозначенные условия выполнены, вы можете выбрать сертификат, щелкнуть «Все задачи», а затем «Экспорт», как если бы вы использовали сертификат только с открытым ключом. При экспорте теперь у вас должна присутствовать возможность выбора экспорта закрытого ключа («Yes, export the private key»), как показано ниже.

Certificate Export Wizard with exportable private key

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

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

Настройка Описание
Including all certificates in the certification path if possible Помогает с переносимостью эмитентов сертификатов и включает все соответствующие открытые ключи в PFX.
Delete the private key if the export is successful Удаляет закрытый ключ из файла и имеет несколько распространенных вариантов использования, но одним из примеров является проверка доступа к закрытым ключам.
Export all extended properties Будет включать любые расширения в текущем сертификате, они относятся к сертификатам [конкретные настройки] для интерфейсов Windows.
Enable certificate privacy Обычно в экспортируемом PFX-файле шифруется только закрытый ключ, этот параметр шифрует все содержимое PFX-файла.
Group or user names Вы можете использовать участника безопасности группы или пользователя из Active Directory для шифрования содержимого файла PFX, но пароль является наиболее переносимым вариантом для устаревших систем или компьютеров, не присоединенных к тому же домену.
Импорт сертификатов

Функция импорта одинакова для всех поддерживаемых типов файлов сертификатов. Единственная разница в том, что если файл содержит закрытый ключ, вы можете «Отметить этот ключ как экспортируемый», о чем вы узнаете подробнее ниже. Windows будет использовать мастер импорта сертификатов.

Certificate Import Wizard with a PFX file

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

Настройка Описание
Enable strong private key protection Требуется пароль для каждого доступа к закрытому ключу. Будьте осторожны с новыми функциями, поскольку они не будут поддерживаться во всех программах.
Mark this key as exportable Вы должны стараться избегать использования этого параметра в любой конечной системе, закрытые ключи следует рассматривать так же, как и хранение паролей.
Protect private key using [virtualization-based security] Этот параметр обеспечивает дополнительные функции безопасности для защиты закрытых ключей от сложных атак вредоносного ПО.
Include all extended properties Относится к тем же настройкам Windows, что и при экспорте.

Сертификаты для подписи кода PowerShell — хороший вариант использования надежной защиты закрытого ключа.

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

Импорт и экспорт сертификатов в PowerShell

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

$certificate = Get-Item (Get-ChildItem -Path 'Cert:\CurrentUser\My\' | Where-Object {$_.Subject -eq $_.Issuer}).PSPath

Теперь, когда вы выбрали сертификат, вы можете использовать команду Export-Certificate, чтобы сохранить файл в кодировке DER, используя команду ниже.

Export-Certificate -FilePath $env:USERPROFILE\Desktop\certificate.cer -Cert $certificate

Теперь давайте посмотрим на экспорт закрытого ключа. Ниже вы проверяете, что у выбранного сертификата есть закрытый ключ. Если он не возвращает True, то команда Get-Item, скорее всего, выбрала неправильный сертификат.

$certificate.HasPrivateKey

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

$pfxPassword = "ComplexPassword!" | ConvertTo-SecureString -AsPlainText -Force
Export-PfxCertificate -FilePath $env:USERPROFILE\Desktop\certificate.pfx -Password $pfxPassword -Cert $certificate

В случае, если необходимо выполнить импорт, как и при экспорте, есть две команды. Одна команда для импорта сертификатов и одна для импорта файлов PFX.

Ниже команда Import-Certificate импортирует файл в формате DER, который вы экспортировали ранее, в личное хранилище текущего пользователя.

Import-Certificate -FilePath $env:USERPROFILE\Desktop\certificate.cer -CertStoreLocation 'Cert:\CurrentUser\My'

Допустим, вы тоже хотите установить закрытый ключ этого сертификата.

$pfxPassword = "ComplexPassword!" | ConvertTo-SecureString -AsPlainText -Force
Import-PfxCertificate -Exportable -Password $pfxPassword -CertStoreLocation 'Cert:\CurrentUser\My' -FilePath $env:USERPROFILE\Desktop\certificate.pfx

Имейте в виду, что пароль должен быть защищенной строкой. Кроме того, если вы импортируете в хранилище локального компьютера (например, «Cert:\LocalMachine«), вам нужно будет запустить команду из командной строки администратора с повышенными привилегиями.

В приведенном выше примере вы также используете параметр -Exportable с командой, отмечая закрытый ключ как экспортируемый в будущем. По умолчанию (без указания этого параметра) экспорт не используется. Экспортируемые закрытые ключи – отельный аспект информационной безопасности, заслуживающий отдельного внимания.

Удаление сертификатов с помощью PowerShell

При удалении сертификатов помните, что понятие «Корзина Windows» в этом случае отсутствует. Как только вы удалите сертификат, он исчезнет! Это означает, что очень важно подтвердить, что вы удаляете правильный сертификат, путем проверки уникального идентификатора, такого как серийный номер или значение расширения Thumbprint.

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

$certificate = Get-Item (Get-ChildItem -Path 'Cert:\CurrentUser\My\' | Where-Object {$_.Subject -eq $_.Issuer}).PSPath

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

$certificate.Thumbprint
$certificate.SerialNumber
$certificate.Subject

Убедитесь, что вы выбрали правильный сертификат, который собираетесь удалить.

Приведенная ниже команда удаляет все выбранные объекты сертификата, используйте с осторожностью! Передав объект $certificate через конвейер в командлет Remove-Item в приведенной ниже команде, вы удалите все содержимое сертификата без каких-либо запросов на проверку.

$certificate | Remove-Item
Резюме

На протяжении всей этой статьи вы работали с сертификатами в Windows, изучая, как получить к ним доступ, и некоторые инструменты, которые можно использовать при работе с ними. По этой теме можно изучить гораздо больше, в том числе о том, как связать установленные сертификаты с конкретными службами или даже о том, как реализовать инфраструктуру закрытого открытого ключа (PKI) путем развертывания собственных центров сертификации (CA).

SSL certificates in Windows Server 2019 are typically stored in the Certificate Store, which is a database on the local machine that holds all the SSL certificates. Here are the steps to locate the SSL certificates in Windows Server 2019:

1. Open the «Run» dialogue box by pressing the «Windows Key + R» and type «mmc» to open the Microsoft Management Console.

2. In the Microsoft Management Console, go to «File» and select «Add/Remove Snap-in.«

3. In the «Add or Remove Snap-ins» window, select «Certificates» and click on the «Add» button.

4. In the «Certificates snap-in» window, select «Computer account» and click on the «Next» button.

5. In the «Select Computer» window, choose the «Local computer: (the computer this console is running on)» option and click on the «Finish» button.

6. Back in the «Add or Remove Snap-ins» window, click on the «OK» button.

7. You will now see the «Certificates» category in the console tree. Expand the tree by clicking on the arrow icon next to it.

8. To access SSL certificates, expand the following folders in order:

– Personal
– Certificates

9. Under the «Certificates» folder, you will find all the SSL certificates installed on your Windows Server 2019.

Please note that the location of SSL certificates may vary depending on the type of usage and configuration. It is recommended to consult your system administrator or follow the specific instructions provided by the Certificate Authority (CA) or the service where the SSL certificate was acquired from.

Video Tutorial:How do I get an SSL certificate from Windows Server?

How do I view installed certificates in Windows Server?

Viewing installed certificates in Windows Server is essential for managing security and troubleshooting issues. Here is a step-by-step guide to help you accomplish this:

1. Launch the Microsoft Management Console (MMC):
– Press the Windows key + R to open the Run dialog box.
– Type «mmc» and hit Enter. The MMC window will open.

2. Add the Certificates Snap-in:
– In the MMC window, navigate to File > Add/Remove Snap-in or click on the «File» menu and select «Add/Remove Snap-in«.
– In the Add or Remove Snap-ins dialog box, select «Certificates» from the Available snap-ins list and click on the «Add» button.
– Choose the «Computer account» option and click «Next«.
– Select the «Local computer» option and click on «Finish«.
– Click «OK» to close the Add or Remove Snap-ins dialog box.

3. View the Installed Certificates:
– In the MMC window, expand «Certificates (Local Computer)» > «Personal» > «Certificates«.
– Here, you’ll find a list of installed certificates on your Windows Server.
– You can sort the list by different columns, such as «Issued To» or «Expiration Date«, to find specific certificates.
– Double-click on a certificate to view its details, including the issuer, subject, and validity period.
– Use the tabs at the top of the certificate properties window to access additional information, such as the certification path and extensions.

By following these steps, you can easily view the installed certificates on your Windows Server using the Microsoft Management Console. This functionality allows you to monitor and manage the security of your server environment effectively.

How do I remove old SSL certificate from Windows server?

To remove an old SSL certificate from a Windows server, follow these steps:

Step 1: Open the Microsoft Management Console (MMC)
– Press the Windows key + R to open the Run dialog box
– Type «mmc» and press Enter

Step 2: Add the Certificates Snap-in
– In the MMC, go to File -> Add/Remove Snap-in
– Select «Certificates» and click on the «Add» button
– Choose «Computer account» and click «Next«
– Select «Local computer» and click «Finish«
– Click «OK» to close the Add/Remove Snap-in window

Step 3: Navigate to the Certificate Store
– In the MMC, expand the «Certificates (Local Computer)» node
– Expand the «Personal» folder
– Click on the «Certificates» folder

Step 4: Find and Remove the Old SSL Certificate
– Locate the old SSL certificate you want to remove
– Right-click on the certificate and choose «Delete«
– Confirm the deletion when prompted

Step 5: Update the Certificate Binding (if necessary)
– If the old SSL certificate was being used for a specific service (e.g., IIS), you need to update the certificate binding to use a new certificate. This step may vary depending on the server application you are using.

Step 6: Restart the Server (if necessary)
– In some cases, a server restart may be required for the changes to take effect. Make sure to plan and communicate any potential downtime in advance.

Please note that the steps provided here are general guidelines, and you should always refer to the official documentation or consult an expert for specific instructions related to your server environment.

How do I find certificates on Windows Server?

To find certificates on Windows Server, you can follow these steps:

1. Open the Microsoft Management Console (MMC) by pressing the Windows key + R, then typing «mmc» and hitting enter.

2. In the MMC, go to File and select Add/Remove Snap-in.

3. In the Add or Remove Snap-ins window, select Certificates and click on the Add button.

4. In the Certificates snap-in window, choose the account you want to manage certificates for, i.e., Current User or Computer Account.

5. In the next screen, select Local Computer or User, depending on your requirements, and click Finish.

6. Click OK to close the Add or Remove Snap-ins window.

7. In the MMC, expand Certificates to view the available certificate stores, such as Personal, Trusted Root Certification Authorities, etc.

8. Expand the appropriate certificate store to view the certificates within it.

9. You can now manage certificates, such as importing, exporting, or deleting them, by right-clicking on the specific certificate.

Please note that the exact steps may vary depending on the specific version of Windows Server you are using, but these general steps should help you locate and manage certificates on most Windows Server editions. It’s always recommended to consult relevant documentation or online resources for your specific version if you encounter any difficulties.

How do I remove SSL certificate from Windows Server 2019?

To remove an SSL certificate from Windows Server 2019, you can follow the steps provided below:

1. Open the Microsoft Management Console (MMC) by pressing the Windows key + R, typing «mmc» in the Run dialog box, and hitting Enter.
2. In the MMC window, click on «File» in the top menu and select «Add/Remove Snap-in.«
3. In the Add or Remove Snap-ins dialog box, select «Certificates» and click on the «Add» button.
4. Choose the «Computer Account» option and click «Next.«
5. Select «Local Computer» and click «Finish» and then «OK» to close the dialog box.
6. In the MMC window, expand the «Certificates (Local Computer)» tree and navigate to the «Personal» > «Certificates» folder.
7. Locate the SSL certificate that you want to remove, right-click on it, and select «Delete.«
8. Confirm the deletion when prompted.

By following these steps, you can effectively remove an SSL certificate from Windows Server 2019.

How do I disable SSL 2.0 and 3.0 on Windows server 2019?

To disable SSL 2.0 and 3.0 on a Windows Server 2019, you can follow these steps:

1. Open the Windows Server Manager by clicking on the Start menu, searching for «Server Manager,» and selecting the corresponding result.
2. In the Server Manager window, navigate to the left-hand pane and select «Local Server.«
3. On the right-hand side, you will see the properties of the local server. Look for the section labeled «Properties» and click on the link labeled «On» next to «IE Enhanced Security Configuration.«
4. In the Internet Explorer Enhanced Security Configuration window, ensure that the settings are turned off for both administrators and users (unless you have specific reasons to enable them).
5. Next, open the Start menu, search for «Internet Options,» and select the corresponding result.
6. In the Internet Properties window, navigate to the «Advanced» tab.
7. In the settings list, locate the security section. Look for the options labeled «Use SSL 2.0» and «Use SSL 3.0.» Uncheck both options.
8. Click on the «Apply» button to save the changes, and then click «OK» to close the Internet Properties window.
9. Finally, restart your server to apply the changes.

Following these steps will disable SSL 2.0 and 3.0 on your Windows Server 2019. It is important to disable these outdated SSL versions to ensure better security and compatibility with modern web standards.

SSL certificates are typically stored in specific locations depending on the type of server or system being used. Here are the common locations where SSL certificates are stored:

1. Web Servers: In the case of web servers like Apache or Nginx, SSL certificates are usually stored in a designated directory on the server’s file system. The specific location can vary based on the server configuration, but it is commonly found in directories such as «/etc/ssl» or «/etc/apache2/ssl«.

2. Certificate Authorities (CAs): Certificate Authorities store SSL certificates in their certificate stores or databases. These certificates are used to issue and manage SSL certificates for the clients and servers that rely on their services.

3. Operating Systems: Some operating systems have their own certificate stores where SSL certificates can be stored. For instance, on Windows systems, SSL certificates can be managed through the Certificate Manager tool, which stores certificates in various locations such as the «trusted root certification authorities» or «personal» certificate stores.

4. Key and Certificate Stores: In some cases, SSL certificates are stored in specific key and certificate stores. These stores provide a secure and centralized location for storing keys, certificates, and associated metadata. For example, on Linux systems, OpenSSL can use a key and certificate store called «pkcs12» or «pfx» file format, which is password-protected and can contain both the private key and the corresponding SSL certificate.

5. Cloud Services: In cloud environments or when using Content Delivery Networks (CDNs), SSL certificates are often managed through their respective platforms. Popular cloud service providers like AWS, Azure, or Google Cloud Platform offer certificate management services or integrations that store and manage SSL certificates within their infrastructure.

It’s important to note that the specific storage location and mechanism may vary depending on the server, system, or application being used. The above list gives a general overview of common storage locations for SSL certificates in various contexts.

Практическая работа с центром сертификации. Настройка и управление

Практическая работа с центром сертификации

Настройка публичного хранилища в MS Windows Server 2012 R2

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

Создать папку Public в каталоге C:\Inetpub\wwwroot\ на сервере сертификации:

Запустить Диспетчер служб IIS. В левой части окна
Диспетчера служб IIS раскрыть дерево подключений /сайты/Default Web Site/Public. При выделении курсором
ветки Public в правой стороне откроется Начальная страница Public, в которой нужно дважды
нажать на Просмотр каталога:

В крайне правом окне нажать на Включить:

Скопировать из каталога C:\Windows\System32\Certsrv\CertEnroll корневого и
подчиненного центров сертификации списки отозванных сертификатов и
сертификаты в каталог C:\Inetpub\wwwroot\Public.

Проверить доступ к этим файлам по адресу https://«имя сервера»/public и скачать любой файл.

Управление шаблонами сертификатов в MS Windows Server 2012 R2

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

Создание шаблона сертификата

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

В окне Совместимость оставить все по умолчанию. В окне
Общие
задать отображаемое имя шаблона – Сертификат пользователя УЦ
. Снять флажок Опубликовать сертификат в Active Directory:

Перейти в закладку Обработка запроса. В поле Цель
выбрать Подпись.

На запрос об изменении назначения сертификата нажать Да:

Перейти в закладку Шифрование, выбрать:

В запросах могут использоваться любые поставщики, доступные на компьютере пользователя
:

В закладке Имя субъекта установить флажок Предоставляется в запросе:

Перейти на вкладку Безопасность и для группы Прошедшие проверку
требуется установить флажок Заявка в колонке Разрешить:

Перейти на вкладку Расширения и изменить настройки
Политики применения
. Для этого необходимо нажать на кнопку Изменить:

В открывшемся диалоговом окне необходимо выбрать политику Подписывание документа,
удалить Шифрующая файловая система (EFS) и нажать на кнопку
ОК. В том случае, если данный пункт отсутствует,
необходимо нажать на кнопку Добавить:

Создание сертификата пользователя по созданному шаблону

В Центре сертификации необходимо вызвать контекстное
меню пункта Шаблоны сертификатов, в котором необходимо
нажать на кнопку Создать – Выдаваемый шаблон сертификата:

В открывшемся диалоговом окне необходимо выбрать ранее созданный шаблон
и нажать на кнопку ОК:

Проверяем шаблон, для этого в браузере открываем страницу центра сертификации:

Нажимаем на строку Запроса сертификата. В следующем
окне нажать на Расширенный запрос сертификата:

Нажать на строку Создать и выдать запрос к этому ЦС:

В окне запроса сертификата выбираем шаблон сертификата Сертификат пользователя УЦ. Обязательно должны быть
заполнены поля Имя и Страна, регион
(ввести значение RU). Нажать кнопку Выдать:

В случае правильного заполнения полей шаблона будет сформирован
сертификат. Нажать Установить этот сертификат:

Заходим в центр сертификации в ветку Выданные сертификаты. Последний
сертификат будет тот, который был сформирован через веб-сайт:

Установка и настройка OCSP-службы подчиненного центра сертификации на базе MS Windows Server 2012 R2

Для установки и настройки OCSP-службы необходимо:

  • установить OCSP-службу;
  • настроить шаблон для выпуска сертификата OCSP-службы;
  • настроить центр сертификации для работы с OCSP-службой;
  • настроить службу.

Установка сетевого ответчика

Для установки доменной службы запустите Диспетчер серверов.
В окне Панель мониторинга нажать Добавить роли и
компоненты.
В окне Мастера добавления ролей и компонентов оставить по
умолчанию тип установки Установка ролей или компонентов. В окне выбора сервера
нажать Далее , оставив все по умолчанию. В окне выбора
ролей сервера найти Службу сертификатов Active Directory, раскрыть
строку дважды кликнув мышкой по строке, поставить флажок в строке Сетевой ответчик:

В появившемся окне нажать кнопку Добавить компоненты:

В окне выбора компонентов нажать Далее:

Нажмите Установить. После установки необходимо
настроить службу, для этого нажмите на строку

Настроить службу сертификатов Active Directory на конечном сервер
:

В окне учетные данные нажмите кнопку Далее. Поставить
флажок в строке Сетевой ответчик и нажать Далее:

Нажать кнопку Настроить:

После настройки закрыть все окна.

Настройка шаблона сетевого ответчика

Запустить Центр сертификации. Для этого нажать кнопку Пуск, в
открывшемся окне на значок стрелки в кружке. Кликнуть дважды мышкой на Центр сертификации.
В центре сертификации переместиться на Шаблоны сертификатов, вызвать контекстное меню, нажать
на Управление. Выделить шаблон Подписывание отклика OSPC, вызвать контекстное меню,
выбрать в нем Свойства. Перейти в закладку Безопасность.
Нажать кнопку Добавить. В окне выбора нажать кнопку Дополнительно:

Нажать кнопку Типы объектов. Поставить флажок в строке
Компьютеры и нажать ОК:

В окне выбора нажать кнопку Поиск. После окончания
поиска в окне результатов найти ваш сервер и нажать ОК:

В окне Группы или пользователи выбрать ваш сервер и
для него в окне Разрешения поставить флажок в строке Заявка:

В Центре сертификации необходимо вызвать контекстное
меню пункта Шаблоны сертификатов, в котором необходимо
нажать на кнопку Создать – Выдаваемый шаблон сертификата. В открывшемся
диалоговом окне необходимо выбрать ранее настроенный шаблон и нажать на
кнопку ОК.

Настройка центра сертификации для поддержки службы сетевых ответчиков

Открыть Центр сертификации. Через контекстное меню откройте Свойства.
Перейти в закладку Расширения. В списке расширений
выбрать Доступ к сведениям о центрах сертификации (AIA):

В строке Размещение написать путь https://«ваш сервер»/ocsp/ocsp.srf.
Поставить флажок в строке Включать в расширение протокола OCSP:

Перезапустить Центр сертификации.

Настройка сетевого ответчика

Запустить Сетевой ответчик:

В окне управления выделить Конфигурация отзыва,
вызвать контекстное меню, выбрать Добавить конфигурацию отзыва:

Введите имя конфигурации отзыва, например, OCSP:

В окне выбора расположения сертификата ЦС должен быть выбран пункт
Выберите сертификат для существующего ЦС предприятия
:

Нажать кнопку Обзор:

Выбрать корневой сертификат ЦС и нажмите ОК:

После выбора сертификата ЦС в окне выбора появиться ссылка на сертификат.
Нажмите Далее:

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

А вот и финальная третья часть нашей серии статей о центре сертификации на предприятии. Сегодня рассмотрим развертывание службы сертификатов на примере Windows Server 2016. Поговорим о подготовке контроллера домена, подготовке веб-сервера, установке корневого и издающего центров сертификации и об обновлении сертификатов. Заглядывайте под кат!

Первая часть серии

Вторая часть серии

Словарь терминов

В этой части серии использованы следующие сокращения и аббревиатуры:

  • PKI (Public Key Infrastructure) — инфраструктура открытого ключа, набор средств (технических, материальных, людских и т. д.), распределённых служб и компонентов, в совокупности используемых для поддержки криптозадач на основе закрытого и открытого ключей. Поскольку аббревиатура ИОК не является распространённой, здесь и далее будет использоваться более знакомая англоязычная аббревиатура PKI.
  • X.509 — стандарт ITU-T для инфраструктуры открытого ключа и инфраструктуры управления привилегиями.
  • ЦС (Центр Сертификации) — служба выпускающая цифровые сертификаты. Сертификат — это электронный документ, подтверждающий принадлежность открытого ключа владельцу.
  • CRL (Certificate Revocation List) — список отзыва сертификатов. Подписанный электронный документ, публикуемый ЦС и содержащий список отозванных сертификатов, действие которых прекращено по внешним причинам. Для каждого отозванного сертификата указывается его серийный номер, дата и время отзыва, а также причина отзыва (необязательно). Приложения могут использовать CRL для подтверждения того, что предъявленный сертификат является действительным и не отозван издателем… Приложения могут использовать CRL для подтверждения, что предъявленный сертификат является действительным и не отозван издателем.
  • SSL (Secure Sockets Layer) или TLS (Transport Layer Security) — технология обеспечивающая безопасность передачи данных между клиентом и сервером поверх открытых сетей.
  • HTTPS (HTTP/Secure) — защищённый HTTP, является частным случаем использования SSL.
  • Internet PKI — набор стандартов, соглашений, процедур и практик, которые обеспечивают единый (унифицированный) механизм защиты передачи данных на основе стандарта X.509 по открытым каналам передачи данных.
  • CPS (Certificate Practice Statement) — документ, описывающий процедуры управления инфраструктурой открытого ключа и цифровыми сертификатами.

Общий план развёртывания

Для развёртывания службы сертификатов нам потребуется четыре машины с Windows Server 2016, которые будут выполнять следующие функции:

  1. Контроллер домена — необходим для функционирования домена Active Directory;
  2. Веб-сервер — будет обеспечивать доступ к сертификатам ЦС и спискам отзывов для клиентов;
  3. Корневой ЦС — будет выполнять функции корневого ЦС;
  4. Подчинённый ЦС — будет выполнять функции издающего ЦС.

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

Подготовка контроллера домена

Перед развёртыванием PKI необходимо убедиться в работоспособности домена Active Directory и что все необходимые серверы (а именно, веб-сервер и подчинённый ЦС) введены в домен. А так же, что подготовлены необходимые учётные записи. На данном этапе нам потребуется только учётная запись с правами Enterprise Admins.

Ряд операций на подчинённом ЦС требуют прав Enterprise Admins, поскольку производится запись в раздел configuration naming context. Если это корневой домен леса, то для этих операций достаточно прав Domain Admins.

Следующим шагом будет конфигурирование политики автоматической выдачи сертификатов (autoenrollment). Эта политика нужна будет в процессе эксплуатации служб сертификатов для автоматической выдачи и обновления истёкших сертификатов на клиентах. Политика настраивается в конфигурации компьютера и пользователя:

  • Computer Configuration\Policies\Windows Settings\Security Settings\Public Key Infrastructure\Certificate Services Client – Auto-Enrollment
  • User Configuration\Policies\Windows Settings\Security Settings\Public Key Infrastructure\Certificate Services Client – Auto-Enrollment

Политика в обоих разделах должна быть сконфигурирована как показано на следующей картинке:

Сконфигурированный объект групповых политик (GPO) должен быть пристыкован к корню домена. Данную процедуру необходимо повторить во всех доменах текущего леса Active Directory.

Далее, необходимо создать запись типа CNAME с именем CDP на сервере ДНС, который будет указывать на веб-сервер (IIS). Эту процедуру необходимо выполнить как на внутреннем, так и на внешнем (который обслуживает зону в интернете) серверах ДНС. Запись можно создать при помощи PowerShell:

Add-DnsServerResourceRecord -CName -Name "cdp" -HostNameAlias "iis.contoso.com" -ZoneName "contoso.сom" 

Подготовка веб-сервера

На веб-сервере нам потребуется выполнить следующее: установить службу IIS (если ещё не установлена), создать общую папку и сконфигурировать веб-сайт на использование этой папки.

  • Установка службы IIS

Для установки службы IIS можно воспользоваться следующей командой:

Install-WindowsFeature -Name Web-Server, Web-WebServer -IncludeManagementTools

  • Создание папки PKIdata

Согласно нашей конфигурационной таблице (см. часть 2), для хранения сертификатов ЦС и списков отзыва нам потребуется общая папка с сетевым именем PKI по следующему пути: C:\InetPub\wwwroot\PKIdata

New-Item -ItemType Directory -Path C:\InetPub\wwwroot -Name PKIdata -Force
New-SmbShare -Path C:\inetpub\wwwroot\PKIdata -Name PKI -FullAccess everyone

После этого нужно выдать права NTFS на запись в эту папку для группы Cert Publishers.

  • Создание веб-сайта

Теперь нам необходимо создать отдельный веб-сайт с именем “CDP” и хост-именем “cdp.contoso.com”:

New-Website -Name CDP -HostHeader cdp.contoso.com -PhysicalPath C:\inetpub\wwwroot\PKIdata
New-WebVirtualDirectory -Site cdp -Name pki -PhysicalPath C:\inetpub\wwwroot\PKIdata

  • Включение поддержки Delta CRL

В нашем сценарии издающий ЦС будет публиковать Delta CRL, которые содержат символ плюс «+» в имени файла (например, contoso-pica+.crl). По умолчанию, IIS будет расценивать этот символ в запросе как метасимвол и не позволит клиентам скачать список отзыва. Для этого необходимо включить двойной эскейпинг в настройках IIS, чтобы расценивать знак плюса в запросе как литерал:

Import-Module -Name WebAdministration
Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter /system.webServer/security/requestFiltering -name allowdoubleescaping -Value 'true'

Установка корневого ЦС

Фактическая установка ЦС будет включать в себя несколько этапов:

  1. Подготовка предустановочных конфигурационных файлов (CAPolicy.inf);
  2. Установка компонента ЦС;
  3. Выполнение постустановочной конфигурации;
  4. Проверка установки.

Перед установкой корневого ЦС, необходимо ещё раз вернуться к конфигурационным таблицам:

Название параметра Значение параметра
Сервер ЦС
Класс ЦС Standalone CA
Тип ЦС Root CA
Сертификат
Имя сертификата Contoso Lab Root Certification authority
Дополнительный суффикс OU=Division Of IT, O=Contoso Pharmaceuticals, C=US
Провайдер ключа RSA#Microsoft Software Key Storage Provider
Длина ключа 4096 бит
Алгоритм подписи SHA256
Срок действия 15 лет

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

Предварительная конфигурация

Предварительные конфигурационные файлы необходимы для ряда настроек, которые невозможно задать во время установки компонента (ни при помощи графического интерфейса, ни при помощи командной строки или PowerShell). К ним обычно относятся настройки расширений сертификата ЦС. Например, для настройки расширения сертификата Certificate Policies, необходимо использовать предварительный конфигурационный файл, в котором настраиваются параметры расширения. Для Microsoft ADCS таким файлом является файл CAPolicy.inf, который должен быть расположен по следующему пути: %windir%\CAPolicy.inf. С синтаксисом этого файла можно ознакомиться в следующей статье: How CA Certificates Work. Поскольку никаких специфичных или нестандартных настроек в сертификате корневого ЦС мы делать не будем, поэтому и предварительный конфигурационный файл сейчас нам не потребуется.

Установка компонента ЦС

Прежде всего необходимо добавить установочные компоненты для AD CS:

Install-WindowsFeature AD-Certificate, ADCS-Cert-Authority -IncludeManagementTools

После этого сверьтесь с предыдущей таблицей, чтобы определить параметры установки. Исходя из данных таблицы, зададим параметры для командлета Install-AdcsCertificationAuthority:

Install-AdcsCertificationAuthority -CACommonName "Contoso Lab Root Certification Authority" `
    -CADistinguishedNameSuffix "OU=Division Of IT, O=Contoso Pharmaceuticals, C=US" `
    -CAType StandaloneRootCA `
    -CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
    -KeyLength 4096 `
    -HashAlgorithmName SHA256 `
    -ValidityPeriod "years" `
    -ValidityPeriodUnits 15 `
    -DatabaseDirectory $(Join-Path $env:SystemRoot "System32\CertLog")

Итоговая настройка

После установки компонента ЦС необходимо настроить рабочие параметры ЦС. Рассмотрим ещё раз элементы, которые нам необходимо настроить:

Название параметра Значение параметра
Сервер ЦС
Срок действия издаваемых сертификатов 15 лет
Точки публикации CRT 1) По-умолчанию
2) C:\CertData\contoso-rca<CertificateName>.crt
3) IIS:\InetPub\PKIdata\contoso-rca<CertificateName>.crt*
Точки распространения CRT 1) cdp.contoso.com/pki/contoso-rca<CertificateName>.crt
Точки публикации CRL 1) По-умолчанию
2) C:\CertData\contoso-rca<CRLNameSuffix>.crt
3) IIS:\InetPub\PKIdata\contoso-rca<CRLNameSuffix>.crt*
Точки распространения CRL 1) cdp.contoso.com/pki/contoso-rca<CRLNameSuffix>.crt
Сертификат
Состав CRL Base CRL
Base CRL
Тип Base CRL
Срок действия 6 месяцев
Расширение срока действия 1 месяц
Алгоритм подписи SHA256
Публикация в AD Нет

* — копируется на сервер IIS

Скрипт настройки

Для конфигурирования настроек ЦС мы будем использовать BATCH скрипт с использованием утилиты certutil.exe:

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::                     Root CA post-installation script                               ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: все комментарии помечены знаком двойного двоеточия (::)
:: записываем пути для публикации и распространения сертификатов ЦС и списков отзыва
:: в отдельные переменные
SET CrlLocal=C:\CertData\contoso-rca%%8.crl
SET CDP=http://cdp.contoso.com/pki/contoso-rca%%8.crl
SET AIA=http://cdp.contoso.com/pki/contoso-rca%%4.crt

:: Создаём папку в корне системного диска, куда будут записываться файлы ЦС. Эта папка
:: создаётся для удобства, чтобы не искать папку CertEnroll в глубине папки Windows.
md C:\CertData

:: Настраиваем пути публикации и распространения для сертификатов ЦС и списков отзыва.
certutil -setreg CA\CRLPublicationURLs "1:%windir%\system32\CertSrv\CertEnroll\%%3%%8.crl\n1:%CrlLocal%\n2:%CDP%"

certutil -setreg CA\CACertPublicationURLs "1:%windir%\system32\CertSrv\CertEnroll\%%1_%%3%%4.crt\n2:%AIA%"

:: Поскольку мы не можем указывать пути публикации для файла сертификата, мы
:: вручную переименовываем его в необходимый формат и копируем в папку CertData
ren %windir%\system32\CertSrv\CertEnroll\*.crt contoso-rca.crt
copy %windir%\system32\CertSrv\CertEnroll\contoso-rca.crt C:\CertData

:: Задаём срок действия издаваемых сертификатов
certutil -setreg CA\ValidityPeriodUnits 15
certutil -setreg CA\ValidityPeriod "Years"

:: Задаём время жизни списков отзыва согласно нашей конфигурации
certutil -setreg CA\CRLPeriodUnits 180
certutil -setreg CA\CRLPeriod "Days"
certutil -setreg CA\CRLOverlapPeriod "Months"
certutil -setreg CA\CRLOverlapUnits 1

:: Отключаем дифференциальные списки отзыва (или Delta CRL)
certutil -setreg CA\CRLDeltaPeriodUnits 0

:: Отключаем генерацию кросс-сертификатов
certutil -setreg ca\CRLFlags +CRLF_DISABLE_ROOT_CROSS_CERTS

:: Конфигурируем ЦС для включения истёкших отозванных сертификатов в списки отзыва
certutil –setreg ca\CRLFlags +CRLF_PUBLISH_EXPIRED_CERT_CRLS

:: Включаем полный аудит событий на ЦС**
certutil -setreg CA\AuditFilter 127

:: если версия ОС ниже, чем Windows Server 2016 необходимо задать алгоритм подписи.
:: Windows Server 2016 по умолчанию использует SHA256.
Certutil -setreg ca\csp\CNGHashAlgorithm SHA256

:: Перезапускаем службу ЦС для применения изменений.
net stop certsvc && net start certsvc

:: Публикуем списки отзыва.
certutil -CRL

Ряд команд нуждается в более развёрнутом пояснении. Команды с настройкой расширений CRL Distribution Points и Authority Information Access имеют специфический синтаксис. Во-первых, пути публикации и распространения указываются в одну строку и разделяются символом новой строки «\n». Каждый путь начинается с числа и отделяется от самого пути символом двоеточия. Это число в начале пути указывает битовую маску флагов публикации для конкретного пути. Значение каждого бита для расширений CDP и AIA приведено в следующей таблице:

Название галочки в MMC Числовое значение Название галочки в MMC Числовое значение
Publish CRLs to this location. 1 Include in the AIA extension of issued
certificates.
2
Include in the CDP extension of issued certificates. 2 Include in the Online Certificate Status. Protocol (OCSP) extension. 32
Include in CRLs. Clients use this to find Delta CRL locations. 4
Include in all CRLs. Specifies where to publish in AD DS when publishing manually. 8
Publish Delta CRLs to this location. 64
Include in the IDP extension of issued CRLs. 128

Если взять путь для CDP: 1:%windir%\system32\CertSrv\CertEnroll\%%3%%8.crl, то цифра 1 в начале строки говорит о том, что это путь физического размещения файла (Publich CRLs to this location). Другие опции здесь не используются. Для включения пути, который будет публиковаться в издаваемых сертификатах, мы будем использовать опцию «Include in the CDP extension of issued certificates» с числовым значением 2. Такой же принцип применяется и для остальных путей.

В каждом пути включены переменные с двойным знаком процента «%%». Это переменные, которые ЦС при формировании пути будет автоматически заполнять исходя из типа переменной.

Первый знак процента используется как эскейп-символ, чтобы процессор командной строки воспринял следующий знак процента как литерал. Дело в том, что знак процента в командном процессоре CMD является служебным символом. Сервер ЦС так же использует знак процента для указания, что это переменная. Для исключения конфликта в командном процессоре используется последовательность из двух знаков процента.

Следующая таблица содержит описание всех доступных переменных и их краткое описание:

Переменная в редакторе расширений CDP и AIA Переменная в скрипте Где используется Значение
<ServerDNSName> %1 CDP/AIA Полное ДНС имя сервера ЦС
<ServerShortName> %2 CDP/AIA Короткое (NetBIOS) имя сервера ЦС
<CaName> %3 CDP/AIA Имя ЦС (атрибут CN в сертификате)
<CertificateName> %4 AIA Индекс сертификата ЦС. Используется только при обновлении сертификата ЦС.
<ConfigurationContainer> %6 CDP/AIA Путь к configuration naming context в Active Directory
<CATruncatedName> %7 CDP/AIA Укороченное (санитизированное) имя сертификата ЦС. В общем случае будет совпадать с полным именем ЦС
<CRLNameSuffix> %8 CDP Индекс ключа ЦС, которым был подписан данный CRL. Используется при обновлении ключевой пары ЦС.
<DeltaCRLAllowed> %9 CDP Добавляет суффикс для Delta CRL (знак «+»).
<CDPObjectClass> %10 CDP Класс объекта в Active Directory
<CAObjectClass> %11 CDP/AIA Класс объекта в Active Directory

В нашем конкретном случае будут использоваться только две переменные: <CertificateName> и <CRLNameSuffix>. Для исходного сертификата ЦС эти переменные пустые. При обновлении сертификата ЦС, переменная будет заменяться на «(index)», где index — номер сертификата ЦС. Индексирование начинается с нуля. Например, имя файла для последующего сертификата ЦС будет иметь вид: contoso-rca(1).crt. И так далее. То же самое касается и переменной , только здесь будет указываться индекс ключевой пары ЦС.

Отдельного внимания заслуживает команда, которая включает аудит операций на сервере ЦС, которые регистрируются в системном журнале Security.evtx. К ним относятся все основные операции: запуск/остановка службы, отправление запроса, выпуск или отклонение сертификата, выпуск списка отзыва. Эту строчку можно найти практически в каждом постустановочном скрипте для ЦС, которые можно найти в похожих статьях в интернете. И практически никто не утруждает себя в подробном объяснении механизма его работы, просто копируют из статьи в статью.

Особенность ведения аудита ЦС заключается в том, что настройка флагов аудита на ЦС является необходимым, но не достаточным условием. Механизм аудита основан на регистрации событий в журнале Security.evtx, который, в свою очередь зависит от настройки политики Audit Object Access в групповых политиках. Т.е. без настройки групповых политик никакого аудита не будет.

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

Прочие настройки

После того как корневой ЦС установлен и сконфигурирован, убедитесь, что всё прошло без ошибок:

  • Откройте оснастку Certification Authorities MMC (certsrv.msc), убедитесь, что служба запущена;
  • Выберите свойства узла ЦС и проверьте поля сертификата, что они соответствуют ожидаемым значениям;
  • Найдите в корне системного диска папку CertData и убедитесь, что там находится два файла: сертификат и список отзыва. Убедитесь, что поля списка отзыва соответствуют ожидаемым значениям.

Если всё хорошо, тогда скопируйте содержимое папки C:\CertData на сервер IIS в папку PKIData. Сертификат корневого ЦС уже можно импортировать на все устройства, которые будут использовать нашу PKI.

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

Certutil -f -dspublish path\contoso-rca.crt RootCA

Для установки сертификата на клиентах в рабочих группах и мобильные устройства необходимо воспользоваться другими инструментами, которые есть в вашем распоряжении. Например, System Center Configuration Manager или Mobile Device Management. Если подходящих инструментов нет, можно копировать и устанавливать сертификат на компьютеры при помощи утилиты certutil.exe. Для установки сертификата в локальное хранилище сертификатов выполните следующую команду:

Certutil -f -addstore Root path\contoso-rca.crt

Установка издающего ЦС

Как и в случае с корневым ЦС, установка издающего ЦС включает в себя четыре этапа:

  1. Подготовка предустановочных конфигурационных файлов (CAPolicy.inf);
  2. Установка компонента ЦС;
  3. Выполнение постустановочной конфигурации;
  4. Проверка установки и конфигурации.

Предустановочная конфигурация

Если для корневого ЦС предустановочный конфигурационный файл нам не требовался, то для издающего ЦС он понадобится. В нём мы настроим расширения Certificate Policies и Basic Constraints для сертификата ЦС. Если с политиками всё понятно, то в расширении Basic Constraints мы запретим выдачу сертификатов другим ЦС с издающего ЦС, поскольку у нас двухуровневая иерархия и добавление новых уровней только усложняет нашу структуру и увеличивает время, затрачиваемое на проверку сертификатов клиентами. Также отключим автоматическую загрузку шаблонов из Active Directory в список выдаваемых шаблонов. По умолчанию, сервер ЦС загружает на выдачу некоторый набор шаблонов сертификатов. Это вредно по двум причинам:

  1. Контроллеры домена практически мгновенно обнаруживают появление ЦС в лесу и даже при отключённой политике автоматической выдачи сами запрашивают себе сертификаты.
  2. Администраторы сами должны определять какие шаблоны будут использовать в организации.

Поэтому мы сконфигурируем ЦС так, что список шаблонов к выдаче будет пустым. Это возможно сделать только через CAPolicy.inf. В нашем случае он будет иметь следующее содержимое:

; заголовок INI файла
[Version]
Signature= "$Windows NT$"

; указываем список политик, которые будут включены в сертификат ЦС. В нашем
; случае будет одна политика под названием AllIssuancePolicies.
[PolicyStatementExtension]
Policies = AllIssuancePolicy
; конфигурируем детали самой политики. Ссылку на документ Certificate Practice
; Statement (CPS) и объектный идентификатор политики
[AllIssuancePolicy]
URL = http://cdp.contoso.com/pki/contoso-cps.html
OID = 2.5.29.32.0
[BasicConstraintsExtension]
IsCA = True
PathLegth = 0
IsCritical = True
; секция прочих настроек ЦС
[certsrv_server]
; отключаем автоматическую загрузку шаблонов сертификатов для выдачи
LoadDefaultTemplates = 0

Файл с именем CAPolicy.inf необходимо скопировать в системную папку Windows до установки ЦС.

Установка компонента ЦС

Прежде всего необходимо добавить установочные компоненты для AD CS:

Install-WindowsFeature AD-Certificate, ADCS-Cert-Authority -IncludeManagementTools

После этого посмотрим на установочную таблицу, чтобы определить параметры установки:

Название параметра Значение параметра
Сервер ЦС
Класс ЦС Enterprise CA
Тип ЦС Subordinate CA
Автоматическая загрузка шаблонов Нет
Сертификат
Имя сертификата Contoso Lab Issuing Certification authority
Дополнительный суффикс OU=Division Of IT, O=Contoso Pharmaceuticals, C=US
Провайдер ключа RSA#Microsoft Software Key Storage Provider
Длина ключа 4096 бит
Алгоритм подписи SHA256
Срок действия 15 лет (определяется вышестоящим ЦС)
Политики выдачи 1) Имя: All Issuance Policies
OID=2.5.29.32.0
URL=http://cdp.contoso.com/pki/contoso-cps.html
Basic Constraints isCA=True (тип сертификата — сертификат ЦС)
PathLength=0 (запрещается создание других промежуточных ЦС под текущим ЦС).

В таблице я выделил только те параметры, которые задаются в процессе установки. Остальные параметры будут настраиваться после установки. Исходя из этих данных сформируем параметры для командлета Install-AdcsCertificationAuthority:

Install-AdcsCertificationAuthority -CACommonName "Contoso Lab Issuing Certification authority" `
    -CADistinguishedNameSuffix "OU=Division Of IT, O=Contoso Pharmaceuticals, C=US" `
    -CAType EnterpriseSubordinateCa `
    -CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
    -KeyLength 4096 `
    -HashAlgorithmName SHA256

После выполнения этой команды будет выведено сообщение о том, что установка ЦС не завершена и для её завершения необходимо отправить сгенерированный запрос (находится в корне системного диска) на вышестоящий ЦС и получить подписанный сертификат. Поэтому находим файл с расширением «.req» в корне системного диска и копируем его на корневой ЦС и на корневом ЦС выполняем следующие команды:

 # отправляем запрос на ЦС.
certreq -submit 'C:\CA-01.contoso.com_Contoso Lab Issuing Certification authority.req'
# предыдущая команда выведет номер запроса. Укажите этот номер запроса в следующей команде
# в моём случае это номер 2
certutil -resubmit 2
# после выпуска сертификата сохраните его в файл. При этом укажите тот же самый номер
# запроса, который был указан после выполнения первой команды
certreq -retrieve 2 C:\subca.crt

Полученный файл (subca.crt) необходимо скопировать обратно на издающий ЦС и завершить инсталляцию:

certutil -installcert c:\subca.crt
net start certsvc

Мы устанавливаем на ЦС выписанный сертификат и запускаем службу сертификатов. После успешной установки можно запустить оснастку Certification Authorities MMC (certsrv.msc) и убедиться, что сертификат успешно установлен и ЦС в работающем состоянии. Теперь осталось дело за постустановочной конфигурацией.

Итоговая настройка

По аналогии с корневым ЦС, нам потребуется сконфигурировать ряд параметров на издающем ЦС. Для этого мы снова напишем BATCH скрипт с использованием утилиты certutil.exe. Но прежде всего посмотрим установочную таблицу и выясним параметры, которые нам необходимо настроить:

Аналогичная таблица составляется и для издающего ЦС.

Название параметра Значение параметра
Сервер ЦС
Срок действия издаваемых сертификатов Максимально: 5 лет (остальное контролируется шаблонами сертификатов)
Публикация в AD (контейнеры) AIA
NTAuthCertificates
Состав CRL Base CRL
Delta CRL
Точки публикации CRT 1) По-умолчанию
2) \\IIS\PKI\contoso-pica<CertificateName>.crt
Точки распространения CRT 1) cdp.contoso.com/pki/contoso-pica<CertificateName>.crt
Точки публикации CRL 1) По-умолчанию
2) \\IIS\PKI\contoso-pica<CRLNameSuffix><DeltaCRLAllowed>.crl
Точки распространения CRL 1) cdp.contoso.com/pki/contoso-pica<CRLNameSuffix><DeltaCRLAllowed>.crl
Base CRL
Тип Base CRL
Срок действия 1 неделя
Расширение срока действия По умолчанию
Алгоритм подписи SHA256
Публикация в AD Нет
Delta CRL
Тип Delta CRL
Срок действия 1 день
Расширение срока действия По-умолчанию
Алгоритм подписи SHA256
Публикация в AD Нет

За основу мы возьмём скрипт с корневого ЦС и изменим только отдельные фрагменты:

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::                     Issuing CA post-installation script                            ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: все комментарии помечены знаком двойного двоеточия (::)
:: записываем пути для публикации и распространения сертификатов ЦС и списков отзыва
:: в отдельные переменные
SET CrlLocal=\\IIS\PKI\contoso-pica%%8%%9.crl
SET CDP=http://cdp.contoso.com/pki/contoso-pica%%8%%9.crl
SET AIA=http://cdp.contoso.com/pki/contoso-pica%%4.crt

:: Настраиваем пути публикации и распространения для сертификатов ЦС и списков отзыва.
certutil -setreg CA\CRLPublicationURLs "1:%windir%\system32\CertSrv\CertEnroll\%%3%%8%%9.crl\n65:%CrlLocal%\n6:%CDP%"

certutil -setreg CA\CACertPublicationURLs "1:%windir%\system32\CertSrv\CertEnroll\%%1_%%3%%4.crt\n2:%AIA%"

:: Поскольку мы не можем указывать пути публикации для файла сертификата, мы
:: вручную переименовываем его в необходимый формат и копируем в сетевую папку
ren %windir%\system32\CertSrv\CertEnroll\*.crt contoso-pica.crt
copy %windir%\system32\CertSrv\CertEnroll\contoso-pica.crt \\IIS\PKI

:: Задаём срок действия издаваемых сертификатов
certutil -setreg CA\ValidityPeriodUnits 5
certutil -setreg CA\ValidityPeriod "Years"

:: Задаём время жизни списков отзыва согласно нашей конфигурации
:: базовый CRL
certutil -setreg CA\CRLPeriodUnits 1
certutil -setreg CA\CRLPeriod "weeks"

:: Delta CRL
certutil -setreg CA\CRLDeltaPeriodUnits 1
certutil -setreg CA\CRLDeltaPeriod "days"

:: Включаем полный аудит событий на ЦС**
certutil -setreg CA\AuditFilter 127

:: Включаем наследование расширения Certificate Policies в издаваемых сертификатах 
certutil -setreg Policy\EnableRequestExtensionList +"2.5.29.32"

:: Включаем поддержку расширения OcspRevNoCheck, если планируется установка
:: сетевого ответчика (Online Responder или OCSP сервера)
certutil -v -setreg policy\editflags +EDITF_ENABLEOCSPREVNOCHECK

:: если версия ОС ниже, чем Windows Server 2016 необходимо задать алгоритм подписи.
:: Windows Server 2016 по умолчанию использует SHA256.
Certutil -setreg ca\csp\CNGHashAlgorithm SHA256

:: Перезапускаем службу ЦС для применения изменений.
net stop certsvc && net start certsvc

:: Публикуем списки отзыва.
certutil -CRL

Заметим, что в путях CRLDistribution Points, изменены флаги публикации (добавлена публикация Delta CRL) и добавлена переменная %9 в имя файла для поддержки уникального имени для дельты.

Здесь мы больше не создаём папку в корне системного диска, а используем сетевую папку PKI на сервере IIS, куда напрямую копируем файл сертификата и публикуем списки отзыва.

Прочие настройки

После того как издающий ЦС установлен и сконфигурирован, убедитесь, что всё прошло без ошибок:

  • Откройте оснастку Certification Authorities MMC (certsrv.msc), убедитесь, что служба запущена
  • Выберите свойства узла ЦС и проверьте поля сертификата, что они соответствуют ожидаемым значениям.
  • Откройте сетевую папку PKI (на сервере IIS) и убедитесь, что там есть два файла сертификата (корневого и издающего ЦС) и три списка отзыва (один для корневого, два для издающего ЦС). Убедитесь, что поля в сертификатах и списках отзыва соответствуют ожидаемым значениям.

Когда основные параметры проверены, необходимо убедиться в правильной связи иерархии ЦС и доступности всех внешних файлов для клиентов. Для этого на сервере ЦС (а лучше, на рабочей станции, где установлены средства удалённого администрирования ЦС) необходимо запустить оснастку Enterprise PKI Health (pkiview.msc). Оснастка автоматически построит текущую иерархию и проверит доступность всех путей для скачивания сертификатов ЦС и списков отзыва. Никаких ошибок быть не должно. Если есть ошибка, необходимо её точно идентифицировать и устранить. В случае успешной настройки оснастка будет выглядеть следующим образом для корневого ЦС:

И для издющего ЦС:

Если вся итоговая конфигурация соответствует ожидаемым значениям и оснастка Enterprise PKI Health не показывает ошибок, это может судить о том, что PKI установлена верно.

Рекомендации

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

Шаблоны сертификатов

Наряду с установкой издающего ЦС, в Active Directory устанавливается набор уже готовых шаблонов сертификатов. Их можно просмотреть в оснастке Certificate Templates MMC (certtmpl.msc). Рекомендации по шаблонам сертификатов:

Использование готовых шаблонов сертификатов

Я рекомендую использовать их копии, даже если вы не планируете вносить в них изменения. Для создания копии шаблона выберите в списке подходящий шаблон, в контекстном меню выберите Duplicate Template и создайте его копию. Целесообразно в имя шаблона включить название компании, чтобы отличить предустановленный шаблон от вами созданного. Например, Contoso Web Server, Contoso Smart Card Logon. Это позволит сравнить настройки исходного и вами созданного шаблона в случае неработоспособности шаблона.

Версия шаблона

Начиная с Windows Server 2012, интерфейс создания шаблона несколько изменился. В самом начале появляется окно с выбором версии ОС на ЦС и предполагаемом клиенте:

Если у вас используются современные версии ОС (например, Windows 7 и выше), может появиться желание выставить настройки на максимум. Если вы не уверены, что ваше приложение совместимо с CNG (Cryptography Next Generation), следует использовать настройки, которые приведены на картинке. Если вы выставляете ОС сервера и клиента выше, чем Windows Server 2003/Windows XP, шаблон будет использовать криптографию несовместимую с этими приложениями. Например, большинство приложений, написанных на .NET, семейство продуктов System Center, службы федераций (AD FS) и т.д. не смогут использовать ключи таких сертификатов (но проверять смогут).

Успешно такие сертификаты смогут использовать приложения, которые используют не .NET, а нативные функции CryptoAPI. К таким приложениям можно отнести, например, IIS, Remote Desktop Services.


Поля Subject и Subject Alternative Names

Существует два метода заполнения поля Subject и расширения Subject Alternative Names: автоматический и ручной. Это настраивается в настройках шаблона сертификата, во вкладке Subject Name.

Если выбран второй пункт (как на картинке), ЦС игнорирует имя субъекта из запроса сертификата и заполняет эти поля из свойств учётной записи пользователя или устройства, которое запрашивает сертификат. В ряде случаев это не подходит (например, сертификаты для внутренних веб-сайтов) и имя субъекта заполняется из значения в запросе сертификата. Тогда переключатель необходимо выставить в верхнее положение. Дополнительно к этому, на вкладке Issuance Requirements обязательно надо выставить галочку «CA certificate manager approval».

Это необходимо затем, что имя для сертификата никак не проверяется. Если этот момент не контролировать, пользователь может запросить сертификаты на любое имя и скомпрометировать весь лес Active Directory. Вряд ли вы позволите рядовому пользователю получить сертификат на имя администратора. После требования одобрения запроса менеджером сертификатов на ЦС, каждый запрос с явным указанием субъекта сертификата будет попадать на ЦС в папку Pending Requests и не будет подписан, пока оператор ЦС не изучит его содержимое и не примет решение о выпуске. Т.е. каждый такой запрос необходимо вручную проверять на содержимое и убедиться, что в запросе указаны верные и допустимые имена. В противном случае запрос должен быть отклонён.

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

Шаблоны сертификатов в Active Directory хранятся в разделе configuration naming context, который реплицируется между всеми контроллерами домена в лесу. Поэтому для назначения прав на шаблоны сертификатов можно использовать только глобальные и универсальные группы. Избегайте назначения прав отдельным пользователям и устройствам.

Обновление сертификатов ЦС

Периодически необходимо обновлять сертификаты ЦС. Рассмотрим несколько аспектов, связанных с обновлением сертификатов ЦС.

Периодичность обновления сертификата ЦС

Это делается в следующих случаях:

  • Срок жизни сертификата ЦС истекает;
  • Ключ ЦС скомпрометирован;
  • Необходимо изменить длину ключа или алгоритм подписи;
  • Слишком большой список отзыва (больше нескольких мегабайт).

Первый вопрос, если всё идёт штатно, за какое время до истечения срока действия сертификата ЦС его нужно обновлять?

Сертификат издающего ЦС должен обновляться за максимальный срок действия издаваемых сертификатов. В нашем случае срок действия сертификата издающего ЦС 15 лет, а максимальный срок действия издаваемых сертификатов 5 лет (см. конфигурационную таблицу). Это означает, что сертификат издающего ЦС необходимо обновить через 10 лет. Если это время затянуть, то мы не сможем обеспечить необходимый срок действия для самого долгосрочного шаблона.

Порядок обновления ЦС

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

Генерация ключей при обновлении сертификатов ЦС

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

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

  • Certificate validation fails when a certificate has multiple trusted certification paths to root CAs.
  • «0x80092013, CRYPT_E_REVOCATION_OFFLINEA» error message when you try to verify a certificate that has multiple chains in Windows Server 2008 or in Windows Vista.

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

Резервное копирование

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

Microsoft Active Directory Certificate Services предоставляет инструменты для резервного копирования компонентов ЦС:

  • Оснастка Certification Authority MMC (certsrv.msc);
  • Утилита certutil.exe с параметром -backup.

С ними можно сделать резервную копию для ключевой пары ЦС и базы данных. Однако эти инструменты не позволяют делать резервную копию настроек ЦС. Эти операции необходимо выполнять вручную. Все настройки ЦС находятся в реестре по следующему пути:

HKLM\System\CurrentControlSet\Services\CertSvc

При резервном копировании всегда экспортируйте данную ветку реестра. При восстановлении ЦС сохранённый REG файл импортируется обратно в реестр после установки роли ЦС.

Полный список элементов ЦС, который подлежит обязательному резервному копированию выглядит так:

  • Ключи и сертификаты ЦС;
  • База данных ЦС;
  • Настройки ЦС из реестра;
  • Предустановочный конфигурационный файл;
  • Установочные и конфигурационные скрипты.

Этот список не зависит от принятой в вашей компании стратегии резервного копирования, он всегда должен быть включён в список резервных копий.

Об авторе

Вадим Поданс — специалист в области автоматизации PowerShell и Public Key Infrastructure, Microsoft MVP: Cloud and Datacenter Management с 2009 года и автор модуля PowerShell PKI. На протяжении 9 лет в своём блоге освещает различные вопросы эксплуатации и автоматизации PKI на предприятии. Статьи Вадима о PKI и PowerShell можно найти на его сайте.

All SSL installed on the windows server is located under the below path.

Path:  \\%APPDATA%\Microsoft\SystemCertificates\My\Certificates

You can refer to the below steps to check all installed certificates on the server.

Step 1: Right-click on «Start» and select «Run

Step 2: Type certmgr.msc and click on the OK button. (Certificate Management MMC)

In the Windows certificate manager, all certificates exist in logical storage locations referred to as certificate stores.



Was this answer helpful?

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как открыть bios на windows 10 pro
  • Драйвера для lenovo b550 windows xp
  • Что такое msvcr120 dll для windows 11
  • Подготовка к настройке windows не выключайте компьютер windows 7 как убрать
  • Настройка второй сетевой карты в windows 10