Zertifikate überwachen

Eine Windows CA funktioniert eigentlich ganz alleine und wenn Sie mit AutoEnrollment oder passenden Berechtigungen vorgesorgt haben, dann müssen Sie quasi "nie" die MMC für die Zertifizierungsstelle starten. Einzig wenn ihr Stammzertifikat abgelaufen ist, weil Sie bei der Installation den Standard der Laufzeit von 5 Jahren nicht vergrößert haben. könnte Sie vorzeitig wachrütteln.

Je intensiver Sie (oder Programme) aber Zertifikate nutzen, desto eher kommt der Bedarf auf, die Funktion der Zertifizierungsstelle, der CRLs und der ausgestellten Zertifikate zu überprüfen. Schließlich ist es vorhersehbar, wann ein Zertifikat abläuft oder eine CRL nicht mehr aktualisiert wird. Die Auswirkungen sind dabei gar nicht mal so einfach zurück zu verfolgen. Würden Sie eine nicht erreichbare CRL dahinter vermuten, wenn Exchange Dienste nicht mehr starten (Siehe Authenticode). Auch Direct-Access und Terminal Dienste nutzen Zertifikate und sind ziemlich störrisch, wenn hierbei etwas nicht passt. Insofern tut Überwachung not. Dazu fallen mir vier Bereiche ein, die im folgenden beschrieben werden:

  • CA Betrieb und KonfigurationsÄnderungen
    Protokollierung und Meldung bei Änderungen von Einstellungen
  • Meldung offener Anfragen
    Ausstehende Zertifikatsanfragen sollten an die CA Manager gemeldet werden.
  • CA CRL und Gültigkeit
    Die CA veröffentlicht regelmäßig die CRL. Die Gültigkeit dieser CRL kann aktiv überprüft werden
  • Gültigkeit ausgestellter Zertifikate
    Ebenso könnte eine "Vorwarnfunktion" implementiert werden, die einen Zertifikatsbesichert (Mailadresse muss dazu natürlich im Zertifikat enthalten sein) über den bevorstehenden Ablauf informiert.
  • Gültigkeit der installierten Zertifikate
    Aktiv könnte eine Routine die Gültigkeit z.B. von ausgestellten Zertifikaten auf Webservern prüfen.

Schauen wir uns die Punkte mal etwas ausführlicher an.

CA Betrieb und KonfigurationsÄnderungen

Der erste Aspekt einer Überwachung ist die Zertifikatsstelle selbst bezüglich Änderungen . Eine Windows CA kann angewiesen werden, solche Veränderungen in ein Eventlog zu schreiben. Standardmäßig sind diese Aktionen alle ausgeschaltet

Es ist natürlich nur ein Teil einer Lösung, diese Optionen einzuschalten. Wenn niemand das Eventlog liest, archiviert oder Alarmbedingungen definiert, dann ist dies auch mehr nur ein weiterer Datenpool auf den bei Fragen hoffentlich zurück gegriffen werden kann. Wer etwas zu verbergen hat, wird dieses Log natürlich auch löschen.

Alternativ kann auch eine Mail gesendet werden

CA CRL und Gültigkeit

Neben der Überwachung von Veränderungen ist natürlich auch eine Statusprüfung wichtig. Hoffen wir mal, das das Stammzertifikat lange genug gültig ist, dass diese nicht wirklich überwacht werden muss, dann ist die CLR schon wichtiger. Diese Datei wird per Default al 7 Tage generiert und bereitgestellt. Die Datei selbst ist dabei mit einem Ablaufdatum versehen, so dass dieser Generierungsprozess funktionieren muss und natürlich auch die Bereitstellung.

Es gibt von Microsoft selbst natürlich Hilfsmittel wie PKIView, welche den aktuellen Status ihrer Zertifizierungsstelle anzeigen. (Die gleiche Ansicht gibt es auch bei der Windows2008 R2 Rollenansicht)

Aber das ist dann eher eine Momentaufnahme und nicht für einen automatisierten Betrieb geeignet. Mir ist leider kein fertiges Programm bekannt, was ich ihnen hier empfehlen kann, aber mit einer Kombination aus WGET, OpenSSL bzw. CertUtil und FIND kann zumindest einen ersten Versuch darstellen. Sie könnten die CRL oder das Stammzertifikat per WGET abholen und als Datei ablegen, die dann ihrerseits wieder per OpenSSL oder CertUtil geprüft werden kann. Da beide Programme ihre Ergebnisse auf den Bildschirm schreiben kann ein "FIND" als Parser nach Fehlern suchen und über einen Errorlevel weiter verarbeitet werden. Viel Spaß beim Skripten.

Eine andere wichtige Option ist es natürlich, direkt eine SSL/TLS-Verbindung zum Server aufzubauen und die Gültigkeit des übermittelten Zertifikats zu prüfen. Sowas können fast alle ordentlichen Monitoring-Programme (z.B. MSXFAQ.DE:PRTG).

Zudem gibt es immer mehr Programme (wie. z.B. Lync oder Exchange), die im Eventlog eine Warnung vor dem Ablauf generieren. Sie müssen also nur ihr Eventlog überwachen.

Meldung bei "Ausstehenden Anfragen"

Über die CA Templates können Sie vorgeben, dass ein Zertifikat nicht automatisch ausgestellt wird, sondern ein CA Admin dieses erst "freigeben" muss.

Das Zertifikat muss dann von einem CA-Administrator quasi "freigegeben" werden, damit der Anfordernde es dann herunterladen kann.

Ratsam ist es dann natürlich, dass die CA Manager entsprechend über ausstehende Anfragen informiert werden. Eine Windows CA kann dies sogar per Default per SMTP machen, wenn Sie nicht die Eventlogs überwachen wollen.

certutil -setreg exit\smtp\smtpserver "ServerName"
certutil -setreg exit\smtp\CRLIssued\To caadmin@firma.tld
certutil -setreg exit\smtp\CertPending\To caadmin@firma.tld
certutil -setreg exit\smtp\Startup\To caadmin@firma.tld
certutil -setreg exit\smtp\Shutdown\To caadmin@firma.tld

Wie sie sehen, können Sie hier auch andere "Events" per Mail melden lassen.

Gültigkeit ausgestellter Zertifikate

Jede Zertifizierungsstelle hat natürlich eine Liste der ausgestellten Zertifikate. Dieses Inventar kann natürlich als Quelle heran gezogen werden, um bald ablaufende Zertifikate zu ermitteln und eine Verlängerung auszuführen. Wer bei der Beantragung auch eine Mailadresse oder eine Person mit dem Zertifikat verbindet, kann so sehr leicht den Besitzer ausfindig machen. Ein umstand, denn kommerzielle Zertifizierungsstellen natürlich als "Service" verkaufen und Sie quasi rechtzeitig auf das Ablaufen eines gekauften Zertifikats hinweisen. Zumindest solange die Kontaktperson im Internehmen ist und noch Mails annehmen kann. Per Skript können Sie natürlich auch Zertifikate überprüfen. Dazu eignet sich sogar das Bordwerkzeug CertUtil.exe. Certutil.exe kann ihnen dabei helfen: Hier werden alle Zertifikate aufgelistet, die in der fraglichen Zeit ablaufen

certutil 
   -view 
   -restrict "NotAfter<=December 21,2010 08:00AM,NotAfter>=December 01,2008 08:00AM" 
   -out "RequestID,RequesterName"

In Verbindung mit PowerShell oder VBScript könnten Sie dann auch immer "Heute" + X Tage als Parameter angeben.

Gültigkeit der installierten Zertifikate

Wer immer ein Zertifikat, z.B. für einen Webserver, Exchange oder Lync anfordert, bindet dieses auf einen Server und dies kann aktiv geprüft werden. Programme wie OpenSSL erlauben per Kommandozeile die Verbindung per TCP/TLS, starten den SSL-Handshake und zeigen das Zertifikat per STDOUT an. Insofern ist es auch hier möglich, so einen Test einfach regelmäßig durchführen zu lassen und die Ausgaben zu überprüfen.

Einige Dienste (z.B. OCS/Lync/Exchange) prüfen selbst regelmäßig, ob ein Zertifikat bald abläuft und generieren einen Eventlog-Eintrag "12018"

Event Type:     Warning 
Event Source:   MSExchangeTransport 
Event Category: TransportService
Event ID:       12018 
Date:           7/27/2010 
Time:           11:02:37 AM 
Computer:       SRV01
Description: 
The STARTTLS certificate will expire soon: subject: owa.msxfaq.de, hours remaining:
AEB2BF547DC2E4F123876FDEEAAC43D2CC5FB592C. Run the New-ExchangeCertificate 
cmdlet to create a new certificate.

Wer also seine Eventlogs geflissentlich überwacht, bekommt zumindest auf Exchange Servern frühzeitig mit, dass ein Zertifikat ausläuft. Interessanter wird aber eine Überwachung über das Netzwerk oder mit Tools, die sogar automatisch erfolgen kann.

Nach dem Download von http://files.dscoduc.com/Download.axd?file=VerifySSLCertificate.zip einfach das darin enthaltene EXE starten. Danke .NET muss es nicht mal installiert werden

Auch DigiCert ist in dem Bereich aktiv, um natürlich auch für sich selbst zu werben. Dazu gibt es auf https://www.digicert.com/util/ ein Programm, welches ebenfalls Zertifikate überprüfen kann.

https://www.digicert.com/util/DigiCertUtil.exe

Allerdings fragt dieses Programm die Zertifikate nicht über LAN ab, sondern kümmert sich um lokal installierte Zertifikate.

Als kleine Zugabe kann es natürlich auch die CRLs prüfen und die Digicert Stamm und Zwischenzertifikate addieren, wenn diese fehlen sollten. Dies ist aber nur erforderlich, wenn Sie ein Digicert-Zertifikat auf ihrem Server installieren. Und sie können mit diesem Tool sogar einen CSR erzeugen lassen.

Analog gibt es einige Anbieter im Internet, die von der angegebenen Adresse und Port-Kombination eine SSL-Verbindung aufbauen, das Zertifikat prüfen und das Ergebnis ausgeben.

Digicert Online Test http://www.digicert.com/help/ Ausführlicher Test.
http://www.sslshopper.com/ssl-checker.html (kann sogar eine Erinnerung absenden)

Wenn Sie eine fehlerhafte Adresse eingeben, dann sehen Sie, dass dahinter OpenSSL eingesetzt wird.

Auch andere Dienste wie z.B. WebSphere prüfen und melden:

Weitere Links