Certificate Signing Request für eine Windows CA mit OpenSSL erstellen

Veröffentlicht von

Wie man mit OpenSSL Certificate Signing Request (CSRs) erstellt, kann man auf sehr vielen Seiten im Internet lesen.
Aber wie erstellt man mit OpenSSL einen CSR der in einer Microsoft Windows CA signiert werden soll?
Das braucht ein zusätzliches Attribut im CSR damit die Windows CA weiß, welches Zertifikatstemplate für die Signierung genutzt werden soll.

Ohne dieses Attribut erscheint die folgende Fehlermeldung:
Die Anforderung enthält keine Zertifikatvorlageninformationen. 0x80094801 (-2146875391 CERTSRV_E_NO_CERT_TYPE)
Verweigert vom Richtlinienmodul 0x80094801, Die Anforderung enthält weder die Erweiterung für die Zertifikatvorlage noch das Anforderungsattribut "CertificateTemplate".

Vorbereitungen

Zunächst wird eine OpenSSL Konfigurationsdatei benötigt, die die wesentlichen Parameter definiert. Beispielkonfiguration (certificate.conf):

oid_section = OIDs

[ OIDs ]
certificateTemplateName = 1.3.6.1.4.1.311.20.2

[ req ]
distinguished_name = req_distinguished_name
encrypt_key = no
prompt = no
string_mask = nombstr
req_extensions = v3_req

[ v3_req ]
subjectAltName = DNS: <FQDN01>, IP: <IP01>, DNS:<FQDN02>, email: <EMAIL01>
certificateTemplateName = ASN1:PRINTABLESTRING:vSphere

[ req_distinguished_name ]
countryName = DE
commonName = <FQDN01>
organizationName = <CompanyName>
organizationalUnitName = <Department>
stateOrProvinceName = NRW
localityName = Bonn
emailAddress = <EMAIL01>

Wichtige Abschnitte der Konfigurationsdatei

  1. oid_section und OIDs:
    Dieser Abschnitt definiert OIDs (Object Identifiers), die wir verwenden möchten. Der Eintrag certificateTemplateName fügt die OID 1.3.6.1.4.1.311.20.2 zu, die die Windows CA ausliest um das Template zu bestimmen.

  2. req und req_distinguished_name:
    Diese Abschnitte enthalten allgemeine Informationen und Einstellungen für die Zertifikatsanforderung wie z.B. Schlüssellänge, Distinguished Names (DN) und Erweiterungen.

  3. v3_req:
    Hier definieren wir Erweiterungen, die unser CSR enthalten soll, z.B. basicConstraints, keyUsage, subjectAltName und insbesondere certificateTemplateName.

Was ist ein certificateTemplateName?

Diese OID wird von der Windows CA verwendet, um herauszufinden, welches Template für das ausgestellte Zertifikat angewendet werden soll. In unserem Beispiel haben wir certificateTemplateName = ASN1:PRINTABLESTRING:vSphere definiert, was bedeutet, dass das Template mit dem Namen vSphere verwendet werden soll.

Erstellen der Zertifikatsanforderung

Mit folgendem OpenSSL Befehl den CSR erstellen:

openssl req -new -newkey ec:<(openssl ecparam -name prime256v1) -keyout ./certificate.key -out ./certificate.csr -config ./certificate.conf

Erklärung des OpenSSL-Befehls:

  • req: Startet eine neue Zertifikatsanforderung.
  • -new: Generiert eine neue Anforderung.
  • -newkey ec:<(openssl ecparam -name prime256v1): Erstellt einen neuen ecdsa-Schlüssel mit prime256v1 parameter Datei
  • -keyout ./certificate.key: Speichert den generierten privaten Schlüssel in der Datei certificate.key.
  • -out ./certificate.csr: Speichert den generierten CSR in der Datei certificate.csr.
  • -config ./certificate.conf: Verwendet die angegebene Konfigurationsdatei.

Nächste Schritte

Nachdem der CSR und der private Schlüssel erstellt wurde, folgt in der Regel:

  1. Einreichen des CSR bei der Windows CA:
    Lade die Datei certificate.csr auf die Windows CA hoch. Der CA Administrator kann mit dem CSR ein Zertifikat generieren. Durch das Attribut certificateTemplateName wird die Windows CA automatisch das Template mit Namen vSphere verwenden.

  2. Erhalt und Installation des Zertifikats:
    Nach der Genehmigung der Zertifikatsanforderung durch die CA wird das signierte Zertifikat ausgestellt. Dieses Zertifikat kann dann auf dem entsprechenden Server installiert werden.

Teile diesen Beitrag
0 0 votes
Article Rating
Abonnieren
Benachrichtige mich bei
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments