Nachfolgend eine Beschreibung, welche Konfigurationseinstellungen notwendig sind, damit eine auf den Active Directory Certificate Services basierende Zertifikathierarchie konform zum "Common PKI" Standard ist.
Der "Common PKI" Standard ist wie folgt beschrieben.
Die Common PKI-Spezifikation ist ein Profil über international verbreitete und anerkannte Standards für elektronische Signaturen, Verschlüsselung und Public-Key-Infrastrukturen. Die Common PKI berücksichtigt alle geschäftsrelevanten elektronischen Signaturen bis hin zur qualifizierten elektronischen Signatur nach dem deutschen Signaturgesetz (SigG), mit der den Formvorschriften im Privat- und Verwaltungsrecht entsprochen werden kann. Außerdem beinhaltet die Spezifikation auch Sicherheitsfunktionalitäten für Secure E-Mail mit unterschiedlichen Sicherheitsniveaus und die Kompatibilität zu den international akzeptierten Standards. Hierdurch wird die schnelle Verfügbarkeit von interoperablen Sicherheitsprodukten sowohl auf der Ebene der Zertifizierungsdiensteanbieter als auch auf der Anwenderebene (Clientseite) ermöglicht.
https://de.wikipedia.org/wiki/Common_PKI
Übersicht
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.
Aus dem Common PKI leiten sich für Microsoft Zertifizierungsstellen folgende Anforderungen an die Konfiguration ab:
- Die "Key Usage" Erweiterung der Zertifizierungsstellen-Zertifikate dürfen nicht die "DigitalSignature" Schlüsselverwendung beinhalten (siehe auch RFC 5280).
- Die "Key Usage" Erweiterung jedes Zertifikats in der Hierarchie muss als kritisch markiert sein.
- Das Subject jedes Zertifikats in der Hierarchie sollte in UTF-8 anstelle von Unicode kodiert werden, um die Verwendung von Sonderzeichen wie beispielsweise Umlaute zu ermöglichen. Dies entspricht der Standardeinstellung der Microsoft Zertifizierungsstelle seit mindestens Windows Server 2012 R2.
Strings MAY be encoded as PrintableString in order to ensure a better interoperability with legacy applications. If a string cannot be represented in the PrintableString character set, UTF8String encoding MUST be used.
Common PKI Part 1 – Page 12
This extension MUST always be included in CA and end entity certificates and MUST be marked critical.
Common PKI Part 1 – Page 22
CA certificates: the keyCertSign bit MUST be set. Additionally, the crlSign bit MAY be set too, if the CA uses the corresponding key to sign CRLs too. Other bits MUST NOT be set.
If the subject public key is only to be used for verifying signatures on certificates and/or CRLs, then the digitalSignature and nonRepudiation bits SHOULD NOT be set.
RFC 5280, 4.2.1.3
Der Common PKI Standard spezifiziert des Weiteren, dass Relative Distinguished Names (RDNs) nicht länger als 64 Zeichen sein dürfen, was dem Standardverhalten der Microsoft Zertifizierungsstelle entspricht, jedoch verändert werden könnte.
Umsetzung
Die Umsetzung unterscheidet sich je nach Zertifizierungsstellen-Rolle:
- Spezielle Einstellungen für Stammzertifizierungsstellen (Root CA).
- Spezielle Einstellungen für Offline-Zertifizierungsstellen (gleich ob Stamm-, Zwischen- oder untergeordnete Zertifizierungsstelle).
- Einstellungen für alle Arten von Zertiifzierungsstellen.
Spezielle Einstellungen für Stammzertifizierungsstellen
Dieser Schritt muss vor der Installation der Stammzertifizierungsstelle erfolgen, oder vor der Erneuerung des Stammzertifizierungsstellen-Zertifikats. Eine Erneuerung des Stammzertifizierungsstellen-Zertifikats erfordert jedoch, dass dieses an alle Teilnehmer kommuniziert werden muss, da es sich technisch um die Begründung einer neuen Zertifizierungsstellen-Hierarchie handelt.
Stammzertifizierungsstellen stellen nicht nur Zertifikate für andere Zertifizierungsstellen aus, sondern auch stellen auch ihr eigenes.
Um zu bewirken, dass die "Key Usage" Erweiterung des eigenen Zertifizierungsstellen-Zertifikats als kritisch markiert wird und diese nicht die "DigitalSignature" Schlüsselverwendung beinhaltet, muss die capolicy.inf Datei der Stammzertifizierungsstelle um folgende Sektion erweitert werden.
[Extensions]
2.5.29.15 = AwIBBg==
Critical = 2.5.29.15
Entgegen anderslautender Anleitungen ist es nicht erforderlich, die Kodierung des Subject DN und des Issuer DN von Stammzertifizierungsstellen explizit auf UTF-8 zu konfigurieren. Dies kann zu Kompatibilitätsproblemen beim Verifizieren der Zertifikatkette führen.
Generell sollten für den Subject DN einer Zertifizierungsstelle nur Zeichen verwendet werden, die mit ASN.1 PrintableString (effektiv alle darstellbaren ASCII-Zeichen) kodiert werden können.
Spezielle Einstellungen für Offline-Zertifizierungsstellen
Offline-Zertifizierungsstellen kennen keine Zertifikatvorlagen, sodass sie auf Standardwerte zurückgreifen müssen.
Um zu bewirken, dass die "Key Usage" Erweiterung in von der Zertifizierungsstelle ausgestellten Zertifikaten als kritisch markiert wird und diese nicht die "DigitalSignature" Schlüsslverwendung beinhaltet, muss folgender Kommandozeilen-Befehl auf jeder Offline-Zertifizierungsstelle ausgeführt werden.
certutil -setreg policy\EditFlags -EDITF_ADDOLDKEYUSAGE
Nach der Änderung muss der Zertifizierungsstellen-Dienst neu gestartet werden, damit die Änderungen angewendet werden.
Einstellungen für alle Arten von Zertifizierungsstellen
Entgegen der offiziellen Anleitung von Microsoft ist es nicht erforderlich und in manchen Fällen sogar schädlich, durch setzen des ENUM_TELETEX_FORCEUTF8 Flag die Kodierung aller Relative Distinguished Names (RDNs) in ausgestellten Zertifikaten mit UTF-8 zu erzwingen. Stattdessen sollte das Flag ENUM_TELETEX_UTF8 (ohne "FORCE") gesetzt sein, was in der Standardeinstellung bereits der Fall ist.
Somit werden RDNs, die nur ASCII-Zeichen enthalten, automatisch in ASN.1 PrintableString kodiert (sofern sie dies bereits in der eingereichten Zertifikatanforderung waren), was konform zu Common PKI ist. Enthält ein RDN darüber hinaus weitere Sonderzeichen, wird er im ausgestellten Zertifikat automatisch in UTF-8 abgebildet.
Weiterführende Links:
- Entfernen der ADCS-spezifischen Erweiterungen aus Zertifikaten
- Umlaute in Zertifizierungsstellen-Zertifikaten
- Die Beantragung eines Zertifikats schlägt fehl mit Fehlermeldung "Error Parsing Request The request subject name is invalid or too long. 0x80094001 (-2146877439 CERTSRV_E_BAD_REQUESTSUBJECT)"
- Grundlagen: Konfigurationsdatei für die Zertifizierungsstelle (capolicy.inf)
- Zeichenkodierung im Subject Distinguished Name von Zertifikatanforderungen und ausgestellten Zertifikaten
Externe Quellen
- Common PKI (Wikipedia)
- Common PKI Specification V2.0 (January 20th, 2009) (Archivlink)
- How to make a stand-alone certification authority that is running Windows Server 2003 with Service Pack 1 or an x64-based version of Windows Server 2003 compliant with ISIS-MTT version 1.1 (Microsoft, Archivlink)
- Use signed policies to protect Windows Defender Application Control against tampering (Windows) – Windows security | Microsoft Docs (Microsoft)
5 Gedanken zu „Beschreibung der notwendigen Konfigurationseinstellungen für das "Common PKI" Zertifikatprofil“
Kommentare sind geschlossen.