Den Subject Distinguished Name (DN) einer Zertifikatanforderung (CSR) nachträglich verändern

Manchmal ist es erforderlich, dass der Subject Distinguished Name (auch Subject, Subject DN, Antragsteller oder Betreff genannt) einer Zertifikatanforderung vor Ausstellung des Zertifikats verändert wird.

Unter bestimmten Umständen ist dies durchaus möglich, wie nachfolgend beschrieben wird.

Es gibt mehrere Wege, dies zu erreichen:

  • Verändern des Subject DN einer zur Genehmigung anstehenden Zertifikatanforderung
  • Verändern des Subject DN während der Übermittlung an die Zertifizierungsstelle
  • Verändern des Subject DN einer Zertifikatanforderung vor deren Einreichung an die Zertifizierungsstelle

Für beide Methoden muss jedoch die Zertifizierungsstelle vorbereitet werden.

Rahmenbedingungen

  • Die nachfolgend beschriebene Vorgehensweise funktioniert nur mit Offline-Zertifikatvorlagen, also solchen, bei denen der Antragsteller den Zertifikatinhalt selbst bestimmen kann.
  • Die Vorgehensweise funktioniert unabhängig davon, ob die Zertifikatvorlage konfiguriert ist, den Zertifikatantrag direkt zu signieren, oder eine Überprüfung durch einen Zertifikatmanager zu erfordern.
  • Das Setzen des nachfolgend genannten Flag wird dazu führen, dass alle Benutzer, welche Berechtigungen zum Beantragen eines Zertifikats besitzen, für alle auf der Zertifizierungsstelle veröffentlichten Offline-Zertifikatvorlagen eine Veränderung des Subject DN möglich ist. Dies kann unter Umständen ein Sicherheitsproblem darstellen.
  • Die Veränderungen des Subject DN werden über "Request Attribute" durchgeführt und sind somit nicht Teil des Zertifikatantrags.
  • Es ist nur möglich, "bekannte" RDN-Typen zu setzen. Sollten RDN-Typen verwendet werden, welche in der Standardeinstellung nicht auf der Zertifizierungsstelle aktiviert sind, müssen diese zunächst aktiviert werden.

Vorbereiten der Zertifizierungsstelle

Bitte beachten, dass das Setzen des Flag ein Sicherheitsproblem darstellen kann.

Zunächst muss das Flag CRLF_ALLOW_REQUEST_ATTRIBUTE_SUBJECT auf der Zertifizierungsstelle aktiviert sein. Ob dies bereits der Fall ist, kann mit folgendem Kommandozeilenbefehl überprüft werden:

certutil -v –getreg CA\CRLFlags

Ist das Flag eingerückt und in Klammern gesetzt, ist es nicht aktiv.

certutil –setreg CA\CRLFlags +CRLF_ALLOW_REQUEST_ATTRIBUTE_SUBJECT

Anschließend ist ein Neustart des Zertifizierungsstellen-Dienstes erforderlich, damit die Änderungen eingelesen werden.

Verändern des Subject DN einer zur Genehmigung anstehenden Zertifikatanforderung

Für diese Variante sind Zertifikatmanager-Berechtigungen (Issue and Manage Certificates) erforderlich.

Die Zertifikatvorlage muss konfiguriert werden, dass eingehende Zertifikatanforderungen nicht direkt ausgestellt werden, sondern dass eine Überprüfung durch einen Zertifikatmanager erforderlich ist (Option "CA certificate manager approval").

Eingehende Zertifikatanforderungen landen dann im Bereich "Pending Certificates" auf der Zertifizierungsstelle.

In unserem Fall ergibt die Inspektion der Zertifikatanforderung, dass das Subject falsch ist und ersetzt werden muss.

Wenn das CRLF_ALLOW_REQUEST_ATTRIBUTE_SUBJECT Flag auf der Zertifizierungsstelle aktiviert ist, kann man nun Subject Relative Distinguished Names (RDNs) in der Form von "Name:Wert" hinzufügen. Hier ein Beispiel:

certutil –setattributes {Request-Id} "CN:{Wert-für-CN-Feld}\nOU:{Wert-für-OU-Feld}\nO:{Wert-für-O-Feld}"

Inspiziert man nun die auszustellende Anforderung mit "All Tasks" – "View Atributes/Extensions…", sollte man die Attribute im ersten Karteireiter wieder finden.

Wird das Zertifikat nun ausgestellt, sollten diese Werte in das ausgestellte Zertifikat übernommen werden.

Der Befehl wird, wenn syntaktisch korrekt eingegeben, immer Erfolg melden, auch wenn das obige Flag nicht auf der Zertifizierungsstelle gesetzt ist. Er wird aber erst dann funktionieren, wenn das obige Flag gesetzt, der Zertifizierungsstellen-Dienst neu gestartet wurde, und danach die Attribute bearbeitet werden.

Es ist nicht möglich, ein bestehendes RDN zu löschen. Man kann es jedoch mit einem leeren String überschreiben (z.B. Im Format "CN="), was dazu führt, dass die Zertifizierungsstelle den RDN nicht in das ausgestellte Zertifikat eintragen kann.

Verändern des Subject DN während der Übermittlung an die Zertifizierungsstelle

Ein Antragsteller kann auch während der Übermittlung einer Zertifikatanforderung an die Zertifizierungsstelle über Request Attribute die gewünschten Manipulationen des Subject DN übermitteln.

certreq -submit -config "{DNS-Name-der-CA}\{Common-Name-der-CA}" -attrib "CertificateTemplate:{Name-derZertifikatvorlage}\nCN:{Wert-für-CN-Feld}\nOU:{Wert-für-OU-Feld}\nO:{Wert-für-O-Feld}"

Verändern des Subject DN einer Zertifikatanforderung vor deren Einreichung an die Zertifizierungsstelle

Für diese Methode muss die Zertifikatanforderung von einem Benutzer signiert werden, welcher über ein Enrollment-Agenten-Zertifikat verfügt. Des Weiteren muss das Zertifizierungsstellenzertifikat der Zertifizierungsstelle, welche das Enrollment-Agenten-Zertifikat ausgestellt hat, im NTAuthCertificates Objekt in der Active Directory Gesamtstruktur hinterlegt sein.

Die nachfolgende Methode wird üblicherweise auch von einem Zertifikatmanager durchgeführt, da ein entsprechendes Zertifikat notwendig ist, um die Anforderung zu signieren. Der Unterschied ist, dass die Bearbeitung vor der Übermittlung der Zertifikatanforderung an eine Zertifizierungsstelle erfolgt. Die PKCS#10 Zertifikatanforderung wird in einer CMC-Schicht verpackt, in welcher die abweichenden Attribute angegeben werden. Diese wird anschließend signiert. Diese Vorgehensweise ist notwendig, um die originale Zertifikatanforderung zu erhalten. Diese kann nicht verändert werden, da andernfalls die Signatur ungültig wäre.

Zunächst muss eine INF-Datei erstellt werden, welche folgenden Inhalt aufweist:

[Version]
Signature= "$Windows NT$"

[RequestAttributes]
CN = "{CommonName}"
DC = "{DomainComponent}"
OU = "{OrganizationalUnitName}"
L = "{LocalityName}"
O = "{OrganizationName}"
S = "{StateOrProvinceName}"
C = "{Country}"
G = "{GivenName}"
I = "{Initials}"
E = "{EmailAddress}"
T = "{Title}"
SN = "{SurName}"
StreetAddress = "{StreetAddres}"
DeviceSerialNumber = "{DeviceSerialNumber}"
UnstructuredAddress = "{UnstructuredAddress}"
UnstructuredName = "{UnstructuredName}"

Die in Klammern ("{Wert}") gesetzten Werte müssen entsprechend an die eigene Umgebung angepasst werden. Werte, die nicht benötigt werden, können mit einem vorangestellten Semikolon (";") auskommentiert werden, oder man kann die komplette Zeile löschen.

Zu beachten ist noch, dass die Attribute aus der ursprünglichen Zertifikatanforderung und der bearbeiteten Version kombiniert werden, wenn sie sich unterscheiden. Sich überschneidende Attribute müssen also zwingend überschrieben werden. Eine Löschung ist nicht möglich, aber man kann mit leeren Strings (z.B. C="") überschreiben, was einer Löschung gleichkommt.

Nun kann die Richtlinien-Datei mit folgendem Befehl auf die Zertifikatanforderung angewendet werden. Es wird eine neue Anforderungs-Datei erzeugt, deren Name ebenfalls angegeben werden muss.

certreq -policy {Request-Datei} {Policy-Datei} {Ausgabe-Datei}

Während des Prozesses wird man zur Angabe des zu verwendenden Signatur-Zertifikats aufgefordert. Dieses muss den Enhanced Key Usage "Certificate Request Agent" beinhalten.

Man kann auch ein Zertifizierungsstellen-Zertifikat verwenden, was jedoch nicht empfohlen wird.

Nun kann die neu erzeugte Anforderungs-Datei an die Zertifizierungsstelle gesendet werden:

certreq -submit {Ausgabe-Datei}

Beim Inspizieren der Zertifikatanforderung sollte man nun sowohl die gewünschten neuen Attribute in der CMC-Schicht sowie die vorigen Werte in der PKCS#10 Schicht zu finden sein.

Ebenso auch im ausgestellten Zertifikat.

Weiterführende Links:

Externe Quellen

Ein Gedanke zu „Den Subject Distinguished Name (DN) einer Zertifikatanforderung (CSR) nachträglich verändern“

Kommentare sind geschlossen.

de_DEDeutsch