Für eine stärkere Kontrolle über die von einer Zertifizierungsstelle ausstellbaren Zertifikate kann eine Einschränkung der Pfadlänge (Path Length Constraint) eingerichtet werden, sodass Zertifizierungsstellen ab einer definierten Hierarchieebene nicht mehr in der Lage sind untergeordnete Zertifizierungsstellen-Zertifikate auszustellen
Für eine Erklärung der Funktionsweise der Einschränkung der Pfadlänge siehe Artikel "Grundlagen: Einschränkung der Pfadlänge (Path Length Constraint)".
Umsetzung
Kennen Sie TameMyCerts? TameMyCerts ist ein Add-On für die Microsoft Zertifizierungsstelle (Active Directory Certificate Services). Es erweitert die Funktion der Zertifizierungsstelle und ermöglicht die Anwendung von Regelwerken, um die sichere Automatisierung von Zertifikat-Ausstellungen zu realisieren. TameMyCerts ist einzigartig im Microsoft-Ökosystem, hat sich bereits in unzähligen Unternehmen auf der ganzen Welt bewährt und steht unter einer freien Lizenz. Es kann über GitHub heruntergeladen und kostenlos verwendet werden. Professionelle Wartung wird ebenfalls angeboten.
Es gibt zwei Möglichkeiten, eine Einschränkung der Pfadlänge in einem Zertifizierungsstellen-Zertifikat zu realisieren:
- Durch Eintrag in die Erweiterung "Basic Constraints" eines Zertifizierungsstellen-Zertifikats. Dies kann entweder über den Zertifikatantrag der Zertifizierungsstelle beantragt oder durch die übergeordnete Zertifizierungsstelle vorgegeben werden. Eine Stammzertifizierungsstelle kann sich diesen Eintrag für ihr eigenes Zertifizierungsstellen-Zertifikat während dessen Ausstellung selbst setzen. Bei einer Stammzertifizierungsstelle (Root CA) raubt dies jedoch Flexibilität, da eine Änderung eine Neuausstellung (Erneuerung) des Zertifizierungsstellen-Zertifikats erforderlich macht.
- Durch Eintrag eines Registrierungsschlüssels in der Zertifizierungsstelle, welcher die Zertifizierungsstelle annehmen lassen wird, sie würde über eine Einschränkung der Pfadlänge verfügen, obwohl keine im Zertifizierungsstellen-Zertifikat definiert ist. Dies ist der bevorzugte Weg für eine Zertifizierungsstelle.
Konfiguration über den Zertifikatantrag einer Zertifizierungsstelle
Wird ein Zertifizierungsstellen-Zertifikat erstmalig beantragt oder später erneuert (im Fall einer Stammzertifizierungsstelle auch: durch sich selbst ausgestellt), kann durch durch vorheriges Eintragen einer Sektion innerhalb der capolicy.inf (funktioniert auch bei bereits bestehenden Zertifizierungsstellen) der entstehende Zertifikatantrag entsprechend bearbeitet werden, sodass eine Einschränkung der Pfadlänge beantragt wird.
[BasicConstraintsExtension]
PathLength={Wert}
Critical=TRUE
Hinweis: Richtlinien (Policies) und Einschränkungen (Constraints) sollten immer von der übergeordneten Zertifizierungsstelle vorgegeben werden. Dies bedeutet, dass die übergeordnete Zertifizierungsstelle nicht an unseren Antrasg gebunden ist und diesen entsprechend auch abweichend bearbeiten kann. Daher ist eine Ergebniskontrolle unerlässlich.
Um die Einschränkung der Pfadlänge zu setzen, wird als "Wert" eine natürliche positive Zahl entsprechend der Anzahl der gewünschten Hierarchieebenen eingetragen. Bitte beachten, dass die letzte Hierarchieebene den Wert "0" erhalten wird. Möchte man also eine zweistufige Hierarchie definieren, muss auf der Stammzertifizierungsstelle der Wert "1" eingetragen werden.
Über die Umsetzung der in einer Zertifikatanforderung (CSR) beantragten Einstellungen entscheidet letztendlich die übergeordnete Zertifizierungsstelle. Somit kann das Ergebnis im ausgestellten Zertifikat vom Zertifikat durchaus abweichen und muss entsprechend kontrolliert werden.
Anschließend kann das Zertifizierungsstellen-Zertifikat beantragt bzw. erneuert werden.
Konfiguration über Registry der Zertifizierungsstelle
Die Konfiguration für die Einschränkung der Pfadlänge von einer Zertifizierungsstelle ausgestellten Zertifikate wird über die Registry auf der Zertifizierungsstellen festgelegt. Sie befindet sich in folgendem Schlüssel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\
{Common-Name-der-Zertifizierungsstelle}\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy
Die Konfiguration kann über den Registrierungs-Editor oder über den folgenden Kommandozeilenbefehl erfolgen:
certutil -setreg Policy\CAPathLength {Wert}
- Um die Einschränkung der Pfadlänge zu setzen, wird eine natürliche positive Zahl entsprechend der Anzahl der gewünschten Hierarchieebenen eingetragen. Bitte beachten, dass die letzte Hierarchieebene den Wert "0" erhalten wird. Möchte man also eine zweistufige Hierarchie definieren, muss auf der Stammzertifizierungsstelle der Wert "1" eingetragen werden.
- Um die Einschränkung der Pfadlänge zu deaktivieren, wird der Wert "-1" (Hexadezimal: ffffffff) eingetragen.
Nach Setzen der Konfiguration muss der Zertifizierungsstellen-Dienst neu gestartet werden, damit die Konfiguration eingelesen und verwendet wird.
Schlussworte
Von der Zertifizierungsstelle ausgestellte Zertifikate (und je nach Konfiguration das Zertifizierungsstellen-Zertifikat selbst) sollten nun in der Erweiterung "Basic Constraints" eine entsprechende Einschränkung der Pfadlänge besitzen.