Überprüfen von Zertifikaten auf deren Ablauf mit Powershell

Die gesicherte Übertragung von Daten ist ein wichtiges Thema in der IT und jeder der einen Computer oder ein Smartphone benutzt hat direkt oder indirekt damit zu tun. Zum Beispiel der Zugriff auf Outlook Web App oder die Synchronisierung der E-Mails per ActiveSync auf dem Smartphone laufen alle über eine gesicherte HTTP-Verbindung (HTTPS), damit niemand deren Inhalt während der Übertragung ausspähen kann. Dazu kommen meistens Zertifikate zum Einsatz, um die Identitätsbestätigung der Gegenstelle durchzuführen und zum Herstellen einer gesicherten Verbindung. Eine gute Beschreibung zum Thema Zertifikate und Verschlüsselung findet man hier: Anleitung Thawte.

Wichtig beim Einsatz von Zertifikaten ist, dass diese folgende drei Kriterien erfüllt werden:

– Das Zertifikat darf nicht abgelaufen sein
– Die Aufgerufene URL muss mit dem CN/SAN des Zertifikats übereinstimmen
– Das Zertifikat muss von einer vertrauten Zertifizierungsstelle ausgestellt sein

Sollte einer der drei genannten Punkte nicht erfüllt sein, so sollte man aus Sicherheitsgründen keine Verbindung mit dem Server eingehen. Es könnte sein, dass es sich hierbei um einen Ausspähversuch durch einen kompromittierten Server handelt.

Für den Betrieb ist es wichtig, dass das eingesetzte Zertifikat gültig ist, deshalb hatte Forefront TMG einen Überprüfungsmechanismus enthalten der alle Zertifikate von veröffentlichten Webservern und lokalen Weblistenern regelmäßig auf deren Ablaufdatum überprüft hat. Näherte sich ein Zertifikat dem Ablaufdatum, so wurde ein Alarm in Forefront TMG generiert, der den Administrator darüber informierte. Da das Ende von Forefront TMG mit dem 31.12.2015 immer näher kommt sollte man sich so langsam Gedanken über eine Alternative machen. Die alternativen Firewall-Produkte bieten diese Funktion der Zertifikatsüberprüfung allerdings nicht an und man ist dazu gezwungen die Ablaufdaten der verwendeten Zertifikate anderweitig im Auge zu behalten. Eine Möglichkeit wäre diese im Kalender von Outlook einzutragen, was allerdings ziemlich aufwendig in der Pflege sein kann. Eine andere Möglichkeit wäre die Überprüfung der Server auf den Ablauf von Zertifikaten mittels Powershell-Skript. Folgendes Powershell-Skript zeigt einen Ansatz, wie man mit Hilfe von Powershell die installierten Computer-Zertifikate auf Windows-Servern auf deren Ablauf überprüfen kann. Sollte ein Zertifikat innerhalb der nächsten Woche ablaufen, so wird automatisch eine E-Mail an eine definierte E-Mail-Adresse gesendet.

—- Start Skript —-

$servers = (“SERVER1″,”SERVER2″,”SERVER3”)
$today = Get-Date
$today = $today.AddDays(7)
$smtpserver = “192.168.0.1”
$smtpsubject = “Zertifikatscheck”
$smtpfrom = “certceck@domain.local”
$smtpto = “itadmins@domain.local”
$body = “Folgende Zertifikate laufen diese Woche aus: `r`n`r`n”

foreach ($server in $servers)
{

$certs = Invoke-Command -ComputerName $server {$foo = Get-ChildItem -Path Cert:\LocalMachine\My ; return $foo}

foreach ($cert in $certs)
{

if ($cert.NotAfter -lt $today)
{

$body += $server + ” : ” + $cert.Subject.Split(“,”)[0] + ” : ” + $cert.NotAfter.ToShortDateString() + “`r`n`r`n”

}

}

}

if ($body -ne “”)
{

Send-MailMessage -SmtpServer $smtpserver -From $smtpfrom -To $smtpto -Subject $smtpsubject -Body $body -Priority High

}

—- Ende Skript —-

Obiges Skript kann man z.B. per geplanten Task jeden Sonntag ausführen, so wird man automatisch über den Ablauf der Zertifikate der kommenden Woche informiert.

Hinweis: Die Verwendung des Skripts erfolgt auf eigene Gefahr, ich übernehme keinerlei Haftung für eventuelle Schäden.

leave your comment

Sicherheitsabfrage: * Time limit is exhausted. Please reload CAPTCHA.