Das Subject (Betreff, Antragsteller) einer Zertifikatanforderung (CSR) nachträglich verändern

Manchmal ist es erforderlich, dass das Subject, also der Antragsteller einer Zertifikatanforderung, wie er im ausgestellten Zertifikat auftauchen wird, verändert wird, bevor das Zertifikat an die Zertifizierungsstelle gesendet oder von dieser ausgestellt wird. Unter bestimmten Umständen ist dies durchaus möglich, wie nachfolgend beschrieben wird.

Es gibt zwei Arten, dies zu erreichen:

  • Verändern des Subject einer zur Genehmigung anstehenden Zertifikatanforderung
  • Verändern des Subject einer Zertifikatanforderung vor deren Einreichung an die Zertifizierungsstelle

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

Vorbereiten der Zertifizierungsstelle

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 einer zur Genehmigung anstehenden Zertifikatanforderung

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

Die Zertifikatvorlage muss entsprechend konfiguriert werden, dass eingehende Zertifikatanforderungen nicht direkt ausgestellt werden, sondern dass eine Überprüfung durch einen Zertifikatmanager erforderlich ist.

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:<Subject>\nOU:<Organisationeinheit>\nO:<Organisation>"

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=")

Verändern des Subject 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 = "<Subject>"
OU = "<Organization>"
L = "<Location>"
O = "<Organization>"
S = "<State>"
C = "Country

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.

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 „Das Subject (Betreff, Antragsteller) einer Zertifikatanforderung (CSR) nachträglich verändern“

Kommentare sind geschlossen.