Ein Policy Modul, um sie zu bändigen: Vorstellung des TameMyCerts Policy Moduls für die Microsoft Zertifizierungsstelle

Als Betreiber einer Zertifizierungsstelle ist man für die Identifikation der Antragsteller und die Bestätigung ihrer Identität verantwortlich. Dass diese Aufgabe gewissenhaft und fehlerfrei ausgeführt wird, ist der zentrale Grundpfeiler für das Vertrauen, dass der Zertifizierungsstelle eingeräumt wird. Namhafte Firmen sind bereits an dieser Aufgabe gescheitert, mussten in Folge von Falschausstellungen sogar Insolvenz anmelden und/oder wurden durch die großen Player am Markt empfindlich bestraft.

In vielen Fällen sind wir als (Microsoft-)PKI-Betreiber in Unternehmen in der Lage, unsere Aufgabe an das Active Directory zu delegieren (ungeachtet der damit einhergehenden Qualität). In vielen Fällen müssen wir unsere Zertifizierungsstelle(n) aber auch anweisen, einfach alles auszustellen, was beantragt wird.

Namhafte Beispiele hierfür sind unter Anderem:

  • Mobile Device Management (MDM) Systeme wie VMware AirWatch beantragen stellvertretend Zertifikate für die Benutzer der verwalteten Endgeräte.
  • Viele im Unternehmen eingesetzte Gerätetypen erfordern den Betrieb eines Simple Certificate Enrollment (SCEP) Servers. Schlecht abgesicherte SCEP-Schnittstellen können ein Einfallstor für Angriffe auf die Umgebung sein.
  • Weitergabe oder Diebstahl von Zugangsdaten zu Benutzer- oder Dienstkonten können zur Ausstellung potentiell böswilliger Zertifikate führen.
  • Und natürlich der Faktor Mensch. Auch PKI-Betreiber können bei der Konfiguration der Zertifizierungsstellen oder manuellen Prüfung von Zertifikatanforderungen Fehler machen und somit Fehlausstellungen von Zertifikaten verursachen. Das gleiche gilt natürlich auch für andere Administratoren, denen vielleicht die Beantragung von Zertifikaten eingeräumt wurde (im schlimmsten Fall sogar über die Zertifizierungsstellen-Webregistrierung).

Namenseinschränkungen des Zertifizierungsstellen-Zertifikats können diese Fälle teilweise, aber nicht ansatzweise vollumfänglich adressieren.

Eine sehr mächtige Alternative oder Ergänzungen zu Namenserweiterung möchte ich heute in Form des des TameMyCerts Policy Moduls vorstellen. Mit diesem ist es möglich, den zulässigen Zertifikatinhalt feingranular festzulegen und Zertifikatanforderungen, die den Regeln nicht entsprechen, direkt auf der Zertifizierungsstelle ablehnen zu lassen.

Auch ist mit diesem eine deutliche flexiblere Planung der Zertifizierungsstellen-Hierarchie möglich, da mehrere Anwendungsfälle mit der gleichen Zertifizierungsstelle individuell eingeschränkt werden können. Ebenfalls kann Zertifikatinhalt erzwungen werden.

Funktionsweise

Im Gegensatz zu Exit Modulen, von denen die Zertifizierungsstelle mehrere laden kann, kann immer nur ein einziges Policy Modul geladen werden. Verwendet man also ein eigenes Policy Modul, verliert üblicherweise man die komplette Funktionalität des Windows Default Policy Moduls. Dieses übernimmt allerdings essentiell wichtige Funktionen wie (unter Anderem)…

  • Prüfen, ob der Antragsteller zur Zertifikatbeantragung berechtigt ist.
  • Hinzufügen der konfigurierten Zertifikaterweiterungen zum ausgestellten Zertifikat (aus der Konfiguration der Zertifikatvorlage, des Policy Moduls, aber auch die Zertifikatvorlageninformation und CDP/AIA Verteilpunkte).
  • Hinzufügen der konfigurierten Zertifikatattribute wie Subject und Subject Alternative Name, wenn diese aus dem Active Directory gebildet werden sollen.

Da Policy Module als Component Object Model (COM) Objekte abgebildet sind, können wir es in unserem Policy Modul einfach nachschalten. Die Zertifikatanforderungen werden zunächst somit an das Windows Default Policy Modul weitergegeben und anschließend dessen Antwort ausgewertet.

Wir behalten somit die volle Funktionalität des Windows Default Policy Moduls bei und können nun zusätzliche Prüfungen vornehmen. Das TameMyCerts Policy Modul unterstützt die Überprüfung aller denkbaren Subject Relative Distinguished Names und die gängigsten Subject Alternative Name Typen.

Folgende Überprüfungen können vorgenommen werden:

  • Erzwingen, dass bestimmte Felder im Zertifikatantrag vorkommen, oder sie erlauben falls sie vorkommen.
  • Erzwingen, dass die spezifizierten Feldtypen nur in einer bestimmten Anzahl vorkommen.
  • Erzwingen, dass der Inhalt der definierten Felder konform zu festgelegten regulären Ausdrücken ist oder nicht gegen definierte reguläre Ausdrücke oder IP-Subnetzmasken verstößt (eine feingranulare Anwendung von Namenseinschränkungen).
  • Erzwingen, dass Zertifikatanforderungen, welche nicht spezifizierte Felder aufweise abgelehnt werden.

Somit können mit dem TameMyCerts Policy Modul unzureichend abgesicherte Schnittstellen wie der Registrierungsdienst für Netzwerkgeräte oder Anbindungen an Mobile Device Management Systeme wie beispielsweise VMware AirWatch effektiv abgesichert werden. Ebenso eignet es sich für die Delegierung manueller Zertifikatanforderungen wie beispielsweise für Webserver-Zertifikate an andere Teams.

Das Policy Modul installieren

Die Definition der Regeln für Zertifikatvorlagen wird über XML-Dateien gesteuert. Zunächst muss ein Ordner auf dem Zertifizierungsstellen-Server erstellt werden, welcher die Definitionsdateien enthalten wird. Beispiel-Dateien werden mit dem Installationspaket mitgeliefert.

Siehe auch die ausführliche beiliegende Dokumentation (README.adoc).

Dem Modul liegt ein Installationsscript (install.ps1) bei. Es muss auf der Zertifizierungsstelle mit Adminstrator-Rechten ausgeführt werden. Hierbei wird der zuvor erzeugte Ordner mit der -PolicyDirectory Direktive angegeben.

Das Installations-Script beendet laufende Microsoft Management Console (mmc) Prozesse, da die Zertifizierungsstellen-Managementkonsole (certsrv.msc) andernfalls unter Umständen die Deregistration der DLL-Datei verhindert.

Wird ein SafeNet Key Storage Provider erkannt, wird eine Wartezeit nach Beendigung des Zertifizierungsstellen-Dienstes eingefügt, um ein bekanntes Problem mit dem KSP zu umgehen.

Die Installation auf Standalone-Zertifizierungsstellen wird unterbunden, da das Modul derzeit in diesem Fall keinen Mehrwert zum Windows Default Policy Modul bietet.

Nach erfolgreicher Ausführung des Installations-Scripts ist das Policy Modul bereits als das aktive Modul festgelegt.

Der Inhalt des Registry-Pfades des Windows Default Policy Moduls wurde in den für das TameMyCerts Policy Modul übernommen.

Sofern die Protokollierungsebene der Zertifizierungsstelle mindestens auf 4 (CERTLOG_VERBOSE) fertgelegt ist, protokolliert das Policy Modul beim Start des Zertifizierungsstellen-Dienstes, dass es bereit ist für die Verarbeitung eingehender Zertifikatanforderungen.

Das Policy Modul konfigurieren

Dem Installationspaket liegen mehrere Beispieldateien (Sample_Webserver.xml, Sample_User_AE_TPM.xml) bei. Diese können als Ausgangsbasis für eigene Regeln verwendet werden. Für jede Zertifikatvorlage muss eine gleichnamige Datei im zuvor erstellten und während der Installation angegebenen Ordner erzeugt werden.

Für die Beschreibung der einzelnen Feldtypen und Direktiven siehe die beiliegende ausführliche Dokumentation (README.adoc).

Bitte beachten, dass das TameMyCerts Policy Modul Namensregeln nur auf Zertifikatanforderungen anwendet, die darauf konfiguriert sind, dass der Antragsteller den Subject Inhalt in der Zertifikatanforderungen angeben darf.

Ein Beispiel:

Das Policy Modul in Aktion

Die Zertifizierungsstelle protokolliert weiterhin wie bekannt das Ereignis Nr. 53 für abgelehnte Zertifikatanforderungen.

Zusätzlich protokolliert das TameMyCerts Policy Modul bei einer abgelehnten Zertifikatanforderung, aus welchem Grund die Ablehnung entschieden wurde.

Beispiele

Active Directory Certificate Services denied request 524437 because The public key does not meet the minimum size required by the specified certificate template. 0x80094811 (-2146875375 CERTSRV_E_KEY_LENGTH).  The request was for CN=intranet.adcslabor.de.  Additional information: Denied by Policy Module
Active Directory Certificate Services denied request 524444 because The certificate has an invalid name. The name is not included in the permitted list or is explicitly excluded. 0x800b0114 (-2146762476 CERT_E_INVALID_NAME).  The request was for CN=sparkasse-muenchen.de, C=UK, S=Bavaria.  Additional information: Denied by Policy Module

Weiterführende Links:

13 Gedanken zu „Ein Policy Modul, um sie zu bändigen: Vorstellung des TameMyCerts Policy Moduls für die Microsoft Zertifizierungsstelle“

Kommentare sind geschlossen.