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

Als Betreiber einer Zertifizierungsstelle ist man (unter Anderem) für die Identifikation der Antragsteller und die Bestätigung der beantragten Identitäten 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 (ungeachtet der damit einhergehenden Qualität) in der Lage, unsere Aufgabe der eindeutigen Identifikation eines Antragstellers an das Active Directory zu delegieren. 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 (nun bekannt als "Workspace ONE") beantragen stellvertretend Zertifikate für die Benutzer der verwalteten Endgeräte, ohne dass die Zertifizierungsstelle auf den beantragten Zertifikatinhalt Einfluss nehmen könnte. "Workspace ONE" hat einen bekannten und bislang nicht behobenen Fehler, dass es Zertifikate ohne Identität beantragt, wenn ein Gerät keinem Benutzer zugeordnet ist.
  • Viele im Unternehmen eingesetzte Gerätetypen erfordern den Betrieb eines Simple Certificate Enrollment (SCEP) Servers, welcher den beantragten Zertifikatinhalt 1:1 an die Zertifizierungsstelle weitergibt. Schlecht abgesicherte SCEP-Schnittstellen können ein Einfallstor für Angriffe auf die Umgebung sein.
  • 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 zwar teilweise, aber nicht ansatzweise vollumfänglich adressieren.

Eine sehr mächtige Alternative, um wieder die Kontrolle über die Zertifikatausstellung zu erlangen, möchte ich heute in Form des des TameMyCerts Policy Moduls vorstellen.

Mit diesem ist es möglich, unter Anderem 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.

TameMyCerts wurde von mit in der Programmiersprache C# entwickelt und unter eine quelloffene Lizenz gestellt. Es kann also kostenfrei eingesetzt werden.

Falls erforderlich kann auch ein kostenpflichtiger Wartungsvertrag abgeschlossen 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.

Funktionen von TameMyCerts

TameMyCerts bietet unter anderem folgende Funktionen:

  • Anwenden von Inhalts-Regeln für Offline-Zertifikatanforderungen. So kann beispielsweise konfiguriert werden, dass Zertifikate zwingend einen DNS-Namen, aber keinesfalls einen Benutzerprinzipalnamen beinhalten dürfen, und dass der beantragte Zertifikatinhalt bestimmten Regeln folgen muss (beispielsweise nur bestimmte DNS-Domänen, IP-Subnetze oder Hostnamen nach bestimmten Mustern). Die Möglichkeiten umfassen hierbei:
    • 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 aufweisen abgelehnt werden.
  • Herstellen einer Verbindung zum beantragten Active Directory Objekt (user oder computer) und sicherstellen, dass es sich in einer bestimmten Sicherheitsgruppe befindet, oder dass es nicht in einer bestimmten Sicherheitsgruppe Mitglied ist. Somit kann beispielsweise die Zertifikatausstellung für administrative Konten unterbunden werden.
  • Eintragen der Security Identifier Zertifikaterweiterung mit den Daten des ermittelten Active Directory Objektes. Ebenso verhindern, dass eine Security Identifier Zertifikaterweiterung (mit ungewissem Inhalt) durch den Antragsteller angegeben wird.
  • Ausstellen von Zertifikaten mit einem bestimmten Anfangsdatum. Auf diese Weise können Zertifikate in die Zukunft datiert werden, sodass sie erst ab einem bestimmten Datum gültig sind. In Verbindung mit den bestehenden Mitteln des Windows Default Policy Moduls können somit Zertifikate für einen exakt definierten Zeitraum ausgestellt werden.
  • "Abschneiden" des Enddatums ausgestellter Zertifikate zu einem bestimmten Zeitpunkt. Auf diese Weise kann beispielsweise ein festes Enddatum für Zertifikate, die schwache Schlüsselgrößen verwenden, bestimmt werden.
  • Sicherstellen, dass der vorgesehene Schlüsselalgorithmus auch tatsächlich verwendet wird (dies wird vom Windows Default Policy Modul nicht überprüft).
  • Sicherstellen, dass Zertifikate nur auf bestimmte Wege (beispielsweise Autoenrollment) beantragt werden, und somit auch verhindern, dass der private Schlüssel als exportierbar markiert wird.

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.

Da TameMyCerts direkt auf der Zertifizierungsstelle in den Zertifikatausstellungs-Prozess eingreift, eignet es sich für alle Schnittstellen, wie beispielsweise:

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:

Externe Quellen

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

Kommentare sind geschlossen.