Назад | Перейти на главную страницу

Допускает ли MMC «Enterprise PKI» любое автоматическое тестирование PKI?

Я использую оснастку Enterprise PKI для диагностики и проверки работоспособности системы MSFT PKI.

Есть ли способ создать сценарий / автоматизировать этот инструмент, чтобы предупреждать меня об ожидающем истечении срока действия CRL или об отсутствии AIA?

Нет, PKIView.msc не предоставляет никаких средств / возможностей автоматизации. Вы должны писать свои собственные сценарии. Я бы посоветовал (извините, фактического кода нет, но способ сделать это) - рассмотреть следующий план и возможные инструменты (при условии, что вы будете использовать Windows PowerShell):

  • перечислить все центры сертификации предприятия (используя ICertConfig интерфейс)
  • перебрать каждый ЦС и получить самый последний сертификат ЦС Exchange (ICertAdmin :: GetCAProperty с участием CR_PROP_CAXCHGCERT в PropId параметр)
  • использовать X509Chanin.Build () метод построения цепочки для каждого сертификата CA Exchange. Это даст вам все сертификаты для проверки.
  • перебрать каждый сертификат и использовать CryptGetObjectUrl функция для извлечения URL-адресов из расширений CDP и AIA.
  • использовать Invoke-WebRequest командлет, чтобы попытаться загрузить объекты по URL-адресу, полученному на предыдущем шаге.
  • сообщать обо всех неудачных загрузках. Если загрузка прошла успешно, вы можете установить пороговые значения, чтобы предупреждать о элементах, срок действия которых истекает или уже истек.

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

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

Также эта задача упростится, если вы будете использовать Модуль PKI PowerShell. Этот модуль уже предлагает способы для перечисления корпоративных центров сертификации, чтения списков отзыва сертификатов управляемым способом, получения сертификатов CA Exchange и так далее.

обновление 26.12.2014: теперь доступен PoC скрипта: Корпоративная PKI (pkiview.msc) PowerShell Edition (PoC)

MMC будет показывать красные / желтые значки, когда что-то не так, но это интерактивная консоль и не имеет возможностей автоматизации. Я использую powershell для вызова команды CLI CERTUTIL для проверки истечения срока действия и invoke-webrequest для проверки доступности AIA.

gci \\servername\certenroll\*.crl | foreach {
    certutil -dump $_.fullname | out-string | % { $_ -match "Next CRL Publish\r\n\s+(.*)" | out-null }
    $expire = [datetime]$matches[1]
    $expire
    # do some date math on $expire
    # send some email if about to expire
}

$aia = "http://pki.acme.com/acme.crt"
if ( (invoke-webrequest $aia).statuscode -ne 200) {
    # not found, send-mailmessage
}