Поделиться через


Продление центра сертификации

службы сертификатов поддерживают продление центра сертификации (ЦС). Продление — это выдача нового сертификата для ЦС, чтобы продлить срок действия ЦС за пределами даты окончания исходного сертификата. Вы можете обновить ЦС как задачу в оснастке MMC центра сертификации или с помощью средства Certutil.exe (с помощью команды -renewCert).

Каждое продление приводит к новому сертификату ЦС; Однако администратор может создать новую пару открытого и закрытого ключа или повторно использовать существующую пару открытого и закрытого ключа для сертификата ЦС. Для обеспечения согласованности и целостности сертификаты ЦС и списки отзыва сертификатов (CRL), выданные ЦС до его продления, будут доступны после продления ЦС. Чтобы сделать их доступными, службы сертификатов поддерживают индекс сертификатов ЦС, списков отзыва сертификатов и ключей.

Ниже приведены индексы и суффиксы сертификатов ЦС и crLs во время различных операций продления ЦС.

Операция Индекс сертификата ЦС Суффикс имени файла сертификата ЦС CRL и ключевой индекс CRL и имя контейнера ключей суффикс
Исходная установка ЦС 0 "" 0 ""
Продление с помощью нового ключа 1 "(1)" 1 "(1)"
Повторное использование ключа возобновления 2 "(2)" 1 "(1)"
Повторное использование ключа возобновления 3 "(3)" 1 "(1)"
Продление с помощью нового ключа 4 "(4)" 4 "(4)"
Повторное использование ключа возобновления 5 "(5)" 4 "(4)"
Продление с помощью нового ключа 6 "(6)" 6 "(6)"
Повторное использование ключа возобновления 7 "(7)" 6 "(6)"

 

При установке ЦС индекс сертификата равен нулю, а суффикс сертификата — "" (пустая строка). Каждый раз, когда сертификат обновляется (независимо от того, используются ли ключи повторно), индекс сертификата увеличивается по одному, и суффикс имени файла сертификата становится строкой формы "(n)", где n представляет количество повторений сертификата ЦС. После первого продления индекс сертификата равен 1, а имя файла сертификата — "(1)". После второго продления индекс сертификата равен 2, а суффикс имени файла сертификата — "(2)" и т. д.

Хотя индекс сертификата ЦС и суффикс увеличиваются по одному при каждом обновлении ЦС, CRL и ключовые индексы и суффиксы имени файла задаются в индекс сертификата ЦС только в том случае, если процесс продления включает новую пару открытого и закрытого ключа. Если это не так, значения этих индексов и суффиксов остаются такими же, как и для последнего индекса. Во время продления администратор указывает, создается ли новая пара ключей или используется ли существующая пара ключей. (В оснастке MMC центра сертификации параметр в пользовательском интерфейсе указывает новую или существующую пару ключей; в средстве Certutil.exe команда certutil -renewCert обновляет ЦС с новой парой ключей, а команда certutil -renewCert ReuseKeys обновляет ЦС с существующей парой ключей.)

Индекс CRL напрямую привязан к ключевому индексу, который устанавливается в индекс сертификата ЦС, только если для продления используется новая пара ключей. После первого продления (который использовал новую пару ключей), индекс списка отзыва сертификатов и ключа имеет значение 1, а суффикс имени контейнера ключей — "(1)". Однако после второго обновления индекс списка отзыва сертификатов и ключа остается 1, а cRL и суффикс имени контейнера ключей также остается "(1)"; Это связано с тем, что второе продление использует существующую пару ключей, и для каждой пары ключей ЦС выдается только один список отзыва сертификатов.

Вы можете получить индексированные сертификаты ЦС и списки отзыва сертификатов, вызвав метод GetCertificatePropertyICertServerExit и интерфейсах ICertServerPolicy). При получении определенных свойств, связанных с сертификатом ЦС или CRL, можно добавить индекс сертификата ЦС на основе нуля в имена свойств. Например, чтобы получить индекс CRL, соответствующий третьему сертификату ЦС, передайте свойство CRLIndex.2 в ICertServerPolicy::GetCertificateProperty; для таблицы полученное значение свойства CRLIndex.2 будет равно 1. Свойство с именем CertCount можно использовать для определения количества выданных ЦС сертификата ЦС.

Сертификаты ЦС и crLs содержат расширение, которое предоставляет сведения об индексе сертификата и ключа. Расширение определяется в Wincrypt.h как szOID_CERTSRV_CA_VERSION со значением "1.3.6.1.4.1.311.21.1". Данные расширения — это значение DWORD (закодированное как X509_INTEGER в расширении); Низкие 16 бит являются индексом сертификата, и высокие 16 бит являются ключевым индексом.

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

ICertServerPolicy::GetCertificateProperty

ICertServerExit::GetCertificateProperty