Beschreibung der notwendigen Konfigurationseinstellungen für das "Common PKI" Zertifikatprofil

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

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.
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.

Common PKI Part 1 – Page 22

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:

Externe Quellen

de_DEDeutsch