Es gibt Fälle, in welchen man Webserver-Zertifikate nicht über die Microsoft Management Console direkt von einer Zertifizierungsstelle in der eigenen Active Directory Gesamtstruktur beziehen kann oder möchte, beispielsweise wenn das betreffende System kein Domänenmitglied ist.
In diesem Fall ist die Verwendung von Zertifikatvorlagen nicht möglich, und man muss manuell einen Zertifikatantrag (Certificate Signing Request, CSR erstellen).
Vorarbeiten
Sofern die Zertifikatanforderung von einer Active Directory integrierten Zertifizierungsstelle beantwortet werden soll, muss für diese eine entsprechende Zertifikatvorlage definiert werden . Die Vorgegehensweise hierzu ist im Artikel "Konfigurieren einer Secure Socket Layer (SSL) Zertifikatvorlage für Web Server" beschrieben.
Erzeugen des Schlüsselpaars und der Zertifikatanforderung
Kennen Sie TameMyCerts? TameMyCerts ist ein Add-On für die Microsoft Zertifizierungsstelle (Active Directory Certificate Services). Es erweitert die Funktion der Zertifizierungsstelle und ermöglicht die Anwendung von Regelwerken, um die sichere Automatisierung von Zertifikat-Ausstellungen zu realisieren. TameMyCerts ist einzigartig im Microsoft-Ökosystem, hat sich bereits in unzähligen Unternehmen auf der ganzen Welt bewährt und steht unter einer freien Lizenz. Es kann über GitHub heruntergeladen und kostenlos verwendet werden. Professionelle Wartung wird ebenfalls angeboten.
Es gibt verschiedene Wege, das Schlüsselpaar und die Zertifikatanforderung zu erstellen. Nachfolgend werden die folgenden beiden Methoden beschrieben:
- Erzeugen der Zertifikatanforderung mit Windows-Bordmitteln (Graphische Benutzeroberfläche, certlm.msc)
- Erzeugen der Zertifikatanforderung mit Windows-Bordmitteln (Kommandozeile, certreq.exe)
- Erzeugen der Zertifikatanforderung mit dem PSCertificateEnrollment PowerShell Modul
Methode 1: Erzeugen der Zertifikatanforderung mit Windows-Bordmitteln (Graphische Benutzeroberfläche, certlm.msc)
Die folgende Methode setzt voraus, dass die Maschine ein Mitglied der gleichan Active Directory Gesamtstruktur wie die Zertifizierungsstelle ist.
Webserver-Zertifikate werden im Computer-Zertifikatspeicher erzeugt und vorgehalten. Daher wird die Zertifikatanforderung über die Verwaltungskonsole für Computerzertifikate (certlm.msc) gestellt, die nun aufgerufen werden muss.
Für diesen Schritt sind lokale Administrator-Berechtigungen auf der Maschine erforderlich.
Unser Ziel ist es, die Zertifikatanforderung nach der Erzeugung als Datei abzuspeichern. Um dies zu erreichen klicken wir rechts unter "Personal" / "Certificates" und wählen "All Tasks" / "Advanced Operations" / "Create Custom Request…".
Im folgenden Dialog können wir mit Klick auf "Next" fortfahren.
Im folgenden Dialog können wir (in den meisten Fällen) mit Klick auf "Next" fortfahren.
In seltenen Fällen muss eventuell noch eine Registrierungs-Richtlinie (engl. "Enrollment Policy" konfiguriert werden. Für Hintergründe hierzu siehe Artikel "Grundlagen Zertifikatbeantragung über Certificate Enrollment Web Services (CEP, CES)").
Im nun folgenden Dialog kann die Auswahl der gewünschten Zertifikatvorlage vorgenommen werden. Nach der Auswahl kann mit Klick auf "Next" fortgefahren werden.
Im nun folgenden Dialog ist es wichtig, mit Klick auf "Details" weitere Optionen zu aktiviert.
Im sich nun öffnenden Dialogfenster muss nun auf "Properties" geklickt werden.
Im sich nun öffnenden Dialog können in der Karteikarte "Subject" die Identitäten konfiguriert werden, welche der Zertifikatantrag enthalten soll.
Für Webserver-Zertifikate ist das RFC 2818 ausschlaggebend. Dieses fordert, dass die Identitäten über den Subject Alternative Name (SAN) vom Typ dNSName abzubilden sind.
Zusätzlich kann es sinnvoll sein, jedoch auch einen commonName zu hinterlegen. Dieser sollte nach RFC ignoriert werden, erlaubt jedoch Anwendungen, die nicht konform sind, einen Fallback zu machen.
Optional kann in der Karteikarte "Private Key" der private Schlüssel exportierbar gemacht werden.
Der Dialog kann nun geschlossen und mit "Next" fortgefahren werden.
Zum Schluss wird der Zertifikatantrag als Datei abgespeichert und der Vorgang mit "Finish" beendet.
Methode 2: Erzeugen der Zertifikatanforderung mit Windows-Bordmitteln (Kommandozeile, certreq.exe)
Soll die Zertifikatbeantragung mit den Windows-Bordmitteln erfolgen, muss zunächst eine Informationsdatei (.inf) für den Zertifikatantrag erstellt werden.
Die Informationsdatei muss mit UTF-8 Kodierung abgespeichert werden. Bei Abweichender Kodierung wird die Erstellung der Zertifikatanforderung fehlschlagen (siehe Artikel "Die Erstellung einer manuellen Zertifikatanforderung schlägt fehl mit Fehlermeldung "Expected INF file section name 0xe0000000"").
Mit folgender Datei wird ein Zertifikatanforderung für ein SSL-Zertifikat erzeugt, welches einen 3072-Bit Schlüssel sowie "test.intra.adcslabor.de" sowohl als "commonName" innerhalb des Subject als auch als "dNSName" innerhalb des alternativen Antragstellernamen enthält.
[Version] Signature="$Windows NT$" [Strings] ; Die folgende Variable an die Umgebung anpassen SERVER_FQDN = "test.intra.adcslabor.de" ; Nachfolgende Strings nicht bearbeiten ; ---------------------------------------------------------------- szOID_SUBJECT_ALT_NAME2 = "2.5.29.17" szOID_ENHANCED_KEY_USAGE = "2.5.29.37" szOID_PKIX_KP_SERVER_AUTH = "1.3.6.1.5.5.7.3.1" [NewRequest] Subject = "CN=%SERVER_FQDN%" Exportable = FALSE MachineKeySet = True KeyLength = 3072 KeyUsage = 0xA0 ; Digital Signature, Key Encipherment ProviderName = "Microsoft Software Key Storage Provider" [Extensions] %szOID_SUBJECT_ALT_NAME2% = "{text}dns=%SERVER_FQDN%" %szOID_ENHANCED_KEY_USAGE% = "{text}%szOID_PKIX_KP_SERVER_AUTH%"
Für Hintergrundinformationen zu den einzelnen Optionen siehe folgende Artikel:
- Grundlagen: Die Key Usage Zertifikaterweiterung
- Welche Schlüssellängen sollten für Zertifizierungsstellen und Zertifikate verwendet werden?
- Grundlagen: Cryptographic Service Provider (CSP) und Key Storage Provider (KSP)
Nun kann anhand dieser Informationsdatei ein Schlüsselpaar und ein Zertifikatantrag erzeugt werden. Mit nachfolgendem Befehl wird die Zertifikatanforderung erzeugt.
certreq.exe -new {Informationsdatei}.inf {Zertifikatantrag}.req
Aus der .inf Datei wird eine Zertifikatanforderung mit Dateiendung .req erzeugt.
Der Befehl muss auf demjenigen System aufgeführt werden, auf welchem das Zertifikat später verwendet werden soll. Das Schlüsselpaar wird auf diesem erzeugt, der private Schlüssel verlässt das System niemals.
Methode 3: Erzeugen der Zertifikatanforderung mit dem PSCertificateEnrollment PowerShell Modul
Das PSCertificateEnrollment PowerShell Modul kann über die PowerShell Gallery bezogen und anschließend geladen werden.
Install-Module -Name PSCertificateEnrollment
Import-Module -Name PSCertificateEnrollment
Für die Erstellung der Zertifikatanforderung muss die Windows PowerShell als Administrator gestartet werden, da das Schlüsselpaar für einen Webserver üblicherweise im Systemkontext erzeugt werden soll.
Mit folgendem Befehl wird ein Zertifikatanforderung für ein SSL-Zertifikat erzeugt, welches einen 3072-Bit Schlüssel sowie "test.intra.adcslabor.de" sowohl als Common Name innerhalb des Subject als auch als DNS-Name innerhalb des alternativen Antragstellernamen enthält.
New-CertificateRequest ` -Machine ` -EnhancedKeyUsage ServerAuthentication ` -KeyLength 3072 ` -Subject "CN=test.intra.adcslabor.de" ` -DnsName "test.intra.adcslabor.de"
Mit dem -Exportable Argument kann optional angegeben werden, dass der private Schlüssel exportiertbar sein soll.
Überprüfen des Zertifikatantrags
Der nun erzeugte Zertifikatantrag kann auf Wunsch eingesehen werden mit folgendem Kommandozeilenbefehl:
certutil -dump {Zertifikatantrag}.req
Siehe hierzu auch Artikel "Eine Zertifikatanforderung (CSR) inspizieren".
Senden des Zertifikatantrags an die Zertifizierungsstelle
Das Senden einer Zertifikatanforderung an eine Zertifizierungsstelle und das Abholen des ausgestellten Zertifikats ist im Artikel "Eine manuell erstellte Zertifikatanforderung an eine Zertifizierungsstelle senden" beschrieben.
Installation des ausgestellten Zertifikats
Das Zertifikat kann nun auf den Computer kopiert werden. Es muss nun in den Zertifikatspeicher installiert und mit dem privaten Schlüssel verbunden werden. Dies geschieht mit folgendem Kommandozeilenbefehl:
certreq -accept {Dateiname-Zertifikat}
Aktivieren des Zertifikats und anschließender Funktionstest
Das Zertifikat muss nun noch an die konkrete Anwendung (beispielsweise Internet Information Services) gebunden werden. Dieser Prozess ist spezifisch für das jeweilige Webserver-Produkt.
Weiterführende Links:
- Manuelle Beantragung eines Remotedesktop (RDP) Zertifikats
- Manuelle Beantragung eines Domänencontroller-Zertifikats
Externe Quellen
- How to Request a Certificate With a Custom Subject Alternative Name (Microsoft)
- certreq (Microsoft)
- Object IDs associated with Microsoft cryptography (Microsoft)
8 Gedanken zu „Manuelle Beantragung eines Webserver-Zertifikats“
Kommentare sind geschlossen.