Umlaute in Zertifizierungsstellen-Zertifikaten

Internationalisierte Domänennamen (Internationalized Domain Names, IDNs) werden seit Windows Server 2012 im Rahmen der Zertifizierungsstelle und den dazugehörigen Komponenten offiziell unterstützt.

Möchte man diese in seine Zertifizierungsstellen-Zertifikaten benutzen, gibt es jedoch einige Besonderheiten zu beachten.

Die Verwendung von Umlauten und anderen Sonderzeichen in Zertifizierungsstellen-Zertifikaten kann zu Kompatibilitätsproblemen führen. Beispielsweise ist Windows Defender Application Control (WDAC) nur zu ASN.1 PrintableString kompatibel. Es ist daher sehr empfehlenswert auf jegliche Sonderzeichen in Zertifizierungsstellen-Zertifikaten zu verzichten.

Umlaute im Antragstellernamen (Subject) des Zertifizierungsstellen-Zertifikats

Umlaute im Antragstellernamen sind technisch gesehen problemlos verwendbar. Die Kodierung des Subject / Issuer Namens wird in diesem Fall jedoch in UTF-8 erfolgen anstatt in ASN.1 PrintableString, da letzterer Zeichensatz die Umlaute nicht darstellen kann.

Installation per Server Manager

Während der Installation der Zertifizierungsstelle wird man eine Warnmeldung erhalten, wenn man einen gemeinsamen Namen (Common Name, CN) oder Distinguished (DN) Name Suffix verwenden möchte, welcher einen Umlaut beinhaltet.

The CA information contains characters that require extended name encoding in the certificate. Certificates containing this name encoding conform to accepted standards, but may be incompatible with non-compliant applications. Do you want to use these fields?

Wie die Warnmeldung bereits darlegt, besteht bei der Verwendung von Umlauten immer die Gefahr, dass sie nicht von allen Anwendungen verstanden wird. Der Antragstellername wird bei Verwendung von Umlauten nicht in PrintableString, sondern in UTF-8 kodiert. Daher sollte entweder eine sorgfältige Überprüfung aller Anwendungen, die die PKI nutzen werden, auf Kompatibilität erfolgen, oder auf die Verwendung von Umlauten besser verzichtet werden.

Installation per Windows PowerShell

Installiert man die Zertifizierungsstelle per Windows PowerShell muss jedoch beachtet werden, dass auch hier die gleiche Meldung ausgelöst wird und zum Abbruch der Rollenkonfiguration führen kann.

Für den Install-AdcsCertificationAuthority Befehl gibt es den -IgnoreUnicode Schalter, welcher das Äquivalent zum Bestätigen der Warnung in der graphischen Oberfläche darstellt.

Install-AdcsCertificationAuthority [...] -IgnoreUnicode

Installation per Windows Powershell-Script

Führt man die Installation der Zertifizierungsstelle per Script durch, muss darüber hinaus darauf geachtet werden, wie die Scriptdatei kodiert ist.

PowerShell Dateien sind üblicherweise (wenn sie mit der PowerShell ISE erzeugt werden) mit UTF-8 mit Byte Order Mark (BOM) kodiert. Nur in dieser Kodierung werden Umlaufe im Antragstellernamen korrekt angewendet.

Obige Warnung wird nicht ausgelöst, wenn die Datei in UTF-8 ohne BOM kodiert ist, die Umlaute werden aber auch nicht korrekt in die Zertifikatanforderung übertragen.

Umlaute in Zertifikatrichtlinien des Zertifizierungsstellen-Zertifikats

Auch Zertifikatrichtlinien (Certificate Policies) können Umlaute enthalten (Beispiel: "Erklärung zum Zertifizierungsstellenbetrieb").

Auch hier gilt, dass die Anwendungen, welche die PKI nutzen sollen, die Umlaute auch verstehen. Ist nicht klar, ob alle Anwendungen damit umgehen können, sollte auf die Verwendung von Umlauten verzichtet werden.

Damit solche Richtlinien in der Zertifikatanforderung der Zertifizierungsstelle auftauchen, werden sie in die Datei capolicy.inf im Bereich "PolicyStatementExtension" eingetragen, welche während der Installation der Zertifizierungsstellen-Rolle angewendet wird.

Die capolicy.inf kann mit Umlauten im PolicyStatementExtension umgehen, wenn die Datei ANSI-kodiert ist. Ist sie in UTF-8 ohne BOM kodiert, werden die Umlaute verfälscht. Ist die Datei in UTF-8 mit BOM kodiert, führt das dazu, dass die capolicy.inf nicht mehr von der Installationsroutine verstanden und entsprechend nicht angewendet wird.

Die Bezeichnung "ANSI" entspricht im Windows-Ökosystem dem Zeichencode Windows-1252 (Latin-1, Westeuropäisch).

Weiterführende Links:

Externe Quellen

de_DEDeutsch