Мониторинг сертификатов с помощью Operation Manager и Powershell


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

Поэтому возникает задача контроля за сертификатами.

Для этого можно использовать Powershell. Техника описана в статье Use PowerShell to Find Certificates that are About to Expire.

Для Powershell 3.0 получение просроченные сертификатов выглядит так:

Get-ChildItem -Path cert: -Recurse -ExpiringInDays 75

Для Powershell 2.0 тоже самое немного сложнее:

Get-ChildItem -Recurse | where { $_.notafter -le (get-date).AddDays(75) -AND $_.notafter -gt (get-date)} | select thumbprint, subject

Как настроить контроль сертификатов на множестве компьютеров? Для автоматизации удобнее всего применить Operation Manager, который может доставить скрипт на нужные компьютеры и сформировать алерт при необходимости. Как это сделать описано в статье OpsMgr: Monitoring Certificate Expiry with a Powershell-based Monitor.

Бонус статьи в том, что используемый Management Pack позволяет создавать произвольные мониторы на базе Powershell скриптов.

Так как мониторить нужно только «свои» сертификаты, а они установлены в контейнер Cert:\LocalMachine\My, то именно в этом контейнере будем проверять сертификаты. Если искать сертификаты от корня Cert:, то будет много алертов на корневые коммерческие сертификаты, а это нас совсем не интересует в рамках поставленной задачи.

Поэтому рабочий скрипт выглядит так:

$currentlocation = Get-Location

 

sl Cert:\LocalMachine\My

$thresholdindays = 90

 

$ExpiredCerts = Get-ChildItem -Recurse | where { $_.notafter -le (get-date).AddDays($thresholdindays)-AND $_.notafter -gt (get-date)} | select thumbprint, subject, notafter

 

$API = new-object -comObject «MOM.ScriptAPI»

$PropertyBag = $API.CreatePropertyBag()

 

if($ExpiredCerts.Length -gt 0) {

 

$OFS = «`r`n»

$result1 = [system.String]::Join($ofs, $ExpiredCerts)

$result2 = [string]$result1

$result2 = $result2 -replace «@{«, «»

$result2 = $result2 -replace «}», «»

$PropertyBag.AddValue(«State»,«ERROR»)

$PropertyBag.AddValue(«Description», «Expired Certificates: « + $result2)

}

 

else {

 

$PropertyBag.AddValue(«State»,«OK»)

$PropertyBag.AddValue(«Description», «ALL GOOD !!»)

}

sl $currentlocation

$PropertyBag

 

Теперь за три месяца (90 дней) до истечения срока действия сертификата вы получите в SCOM алерт, который будет висеть до замены сертификата или пока он не будет просрочен (или удалён).

Реклама

комментария 2

  1. скрипт не рабочий

    • Это местный движок ломает форматиование: кавычки поправьте — и всё заработает.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: