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
- Send e-mail when a certification event occurs
http://technet.microsoft.com/en-us/library/cc738001(WS.10).aspx - Send E-mail When a Certification Event Occurs
http://technet.microsoft.com/en-us/library/cc731934.aspx
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.
- Certificate Authority Monitor
http://gallery.technet.microsoft.com/ScriptCenter/en-us/164e8047-d7bf-4774-91cf-90d46b82e725
VBScript zur Überwachung einer CA - Microsoft Certificate Lifecycle Manager 2007 (CLM
2007) Technical Library
http://technet.microsoft.com/en-us/library/cc708653(WS.10).aspx - CLM Quickstart
http://download.microsoft.com/download/5/5/d/55dffa9a-1246-4f77-bc8e-22759af6ed23/CLMQuickStartGuideB1.doc - Certificate Expiration Alerter
http://blogs.technet.com/b/nexthop/archive/2011/11/18/certificate-expiration-alerting.aspx
http://www.lync-solutions.com/Pages/CertificateExpirationAlerter.aspx
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.
- Send E-mail When a Certification Event Occurs
http://technet.microsoft.com/en-us/library/cc731934.aspx - Configuring the SMTP Exit Module
http://technet.microsoft.com/en-us/library/cc773129(WS.10).aspx - Certificate Services Lifecycle Notifications
https://social.technet.microsoft.com/wiki/contents/articles/14250.certificate-services-lifecycle-notifications.aspx
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.
- How to determine all certificates that will expire
within 30 days
http://blogs.technet.com/pki/archive/2008/04/24/how-to-determine-all-certificates-that-will-expire-within-30-days.aspx - Notify Users of cert expiration...
http://blogs.msdn.com/b/spatdsg/archive/2007/07/19/notify-Users-of-cert-expiration.aspx - Working with Certificates in Active Directory
PowerShell
http://blogs.msdn.com/b/adPowerShell/archive/2009/04/26/working-with-certificates.aspx - A Powerful New Tool für Certificate Management
http://technet.microsoft.com/en-us/magazine/2007.06.certificate.aspx - Microsoft Certificate Lifecycle Manager 2007 (CLM
2007) Technical Library
http://technet.microsoft.com/en-us/library/cc708653(WS.10).aspx - Installing and Configuring CLM 2007 in a Test
Environment
http://technet.microsoft.com/en-us/library/cc708663(WS.10).aspx - CLM Quickstart
http://download.microsoft.com/download/5/5/d/55dffa9a-1246-4f77-bc8e-22759af6ed23/CLMQuickStartGuideB1.doc
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.
- Verifying The SSL Certificate Expiration with a tool
http://blogs.technet.com/b/pki/archive/2011/02/22/verifying-the-ssl-certificate-expiration-with-a-tool.aspx
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.
- The STARTTLS certificate will expire soon. The
certificate must be renewed to preserve mail flow.
http://technet.microsoft.com/en-us/library/ff360797(EXCHG.140).aspx
Auch andere Dienste wie z.B. WebSphere prüfen und melden:
- Manage certificate expiration settings
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/usec_sslmancertexpir.html - Proactively Handling Certificate Expiration With ssl-cert-check
http://prefetch.net/articles/checkcertificate.html (Unix ShellScript) - Certificate Revocation and Status Checking
http://technet.microsoft.com/en-us/library/bb457027.aspx - check-cert-expire.pl
http://search.cpan.org/~hirose/Net-SSL-ExpireDate-1.09/sample/check-cert-expire.pl - Automated Certificate Expiration Checks on CentOS
http://www.linux.com/learn/tutorials/319825-automated-certificate-expiration-checks-on-centos - certwatch(1) - Linux man page Name
http://linux.die.net/man/1/certwatch - Nagios ssl-cert-check-Plugin
http://nagiosPlugins.org/man/check_http -
DiskMonitor SSL Modul
http://www.diskmonitor.com/ism/SSL-Certificate-Monitor.aspx -
Sicher gibt es noch eine ganze weitere Menge von Tools, Programmen und Agenten in den verschiedenen Monitoringsystemen.
Weitere Links
- AutoEnrollment
- CRL
- Authenticode
- OpenSSL
- AD CS: Enterprise PKI (PKIView)
http://technet.microsoft.com/en-us/library/cc732261(WS.10).aspx - Test-Certificate
http://social.technet.microsoft.com/Forums/en-US/winserversecurity/thread/82c15b7a-1eae-46ea-9ad1-7b5c09fb2a90 - Certificate Services Lifecycle Notifications
https://social.technet.microsoft.com/wiki/contents/articles/14250.certificate-services-lifecycle-notifications.aspx - Microsoft Certificate Lifecycle Manager 2007 (CLM
2007) Technical Library
http://technet.microsoft.com/en-us/library/cc708653(WS.10).aspx - Installing and Configuring CLM 2007 in a Test
Environment
http://technet.microsoft.com/en-us/library/cc708663(WS.10).aspx - CLM Quickstart
http://download.microsoft.com/download/5/5/d/55dffa9a-1246-4f77-bc8e-22759af6ed23/CLMQuickStartGuideB1.doc