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


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

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

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

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

Операция Индекс сертификата ЦС Суффикс имени файла сертификата ЦС 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)" и т. д.

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

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

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

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

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

ICertServerPolicy::GetCertificateProperty

ICertServerExit::GetCertificateProperty