Manuelle Beantragung eines Remotedesktop (RDP) Zertifikats

Es gibt Fälle, in welchen man Remotedesktop-Zertifikate nicht 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

Bevor Remotedesktop-Zertifikate beantragt werden, sollten folgende Voraussetzungen erfüllt sein:

  • Die Teilnehmer im Active Directory müssen der Zertifizierungsstellen-Hierarchie vertrauen. Werden die Remotedesktop-Zertifikate von einer fremden Zertifizierungsstelle ausgestellt, muss das Stammzertifizierungsstellen-Zertifikat allen Teilnehmern bekannt gemacht werden. Dies kann beispielsweise via Gruppenrichtlinie erfolgen, was im Artikel "Vertrauenswürdige Stammzertifizierungsstellen per Gruppenrichtlinie verteilen" näher beschrieben wird.
  • Damit der Sperrstatus der Zertifikate überprüft werden kann, muss sichergestellt sein, dass diese durch alle Teilnehmer aufgelöst (Domain Name System) sowie heruntergeladen werden können (Routing, Proxy, Firewallregeln).

Bestandsaufnahme für die manuelle Erstellung einer Zertifikatanforderung

Zunächst muss der Inhalt der Zertifikatantrags bestimmt werden. Als Anhaltspunkt hierfür kann eine der Standard-Zertifikatvorlagen für Domain Controller dienen. Im nachfolgenden Beispiel orientieren wir uns an der im Artikel "Konfigurieren einer Zertifikatvorlage für Remotedesktop (RDP) Zertifikate" beschriebenen Zertifikatvorlage für Remotedesktop-Zertifikate.

Im Karteireiter "Request Handling" sieht man, dass der Zwerk der Zertifikatvorlage auf "Signature and Encryption" eingestellt ist, was dazu führt, dass die Key Usage Erweiterung des Zertifikats "Key Encipherment" und "Digital Signature", also den hexadezimalen Wert A0 beinhalten wird. Dies muss bereits bei der Schlüssel-Erstellung auf dem beantragenden Computer berücksichtigt werden.

Im Karteireiter "Cryptography" sind für uns der Schlüsselagorithmus, die Schlüssellänge und der Cryptographic Service Provider (CSP) von Relevanz. Die Remotedesktop-Vorlage verwendet noch "Legacy"-Anbieter, also CSPs, welche lediglich RSA unterstützen. Die Schlüssellänge ist auf 2048 Bit gesetzt, und es wird der "Microsoft RSA SChannel Cryptographic Provider" verwendet.

Im "Subject Name" Karteireiter sehen wir, dass das Subject leer ist und ein Subject Alternative Name in Form eines DNS-Namens gewählt wird.

Im Karteireiter "Extensions" sehen wir, dass als Enhanced Key Usage (Application Policies) folgende Werte gesetzt sind:

  • Remote Desktop Authentication (Object Identifier: 1.3.6.1.4.1.311.54.1.2)

Zertifikatvorlage für manuelle Beantragung von Remotedesktop-Zertifikaten erstellen

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 Zertifikatvorlage für Remotedesktop (RDP) Zertifikate" beschrieben. Für manuelle Beantragungen muss jedoch abweichend im Karteireiter "Subject Name" konfiguriert werden, dass der Antragsteller die Identität mit der Zertifikatanforderung vorgeben können soll.

Da dies jedoch ein Sicherheitsproblem darstellen kann, sollten die Zertifikatanforderungen durch einen Zertifikatmanager freigegeben werden, was durch Aktivieren der Option "CA certificate manager approval" im Karteireiter "Issuance Requirements" erreicht werden kann.

Da bei einer manuellen Zertifikatanforderung ein Benutzer- anstelle eines Computerkontos den Zertifikatantrag stellen wird, muss der entsprechende Benutzer oder eine Sicherheitsgruppe, in welcher er Mitglied ist, das "Enroll" Recht erhalten.

Informationsdatei für manuellen Zertifikatantrag erstellen

Aus all diesen Informationen kann nun eine Informationsdatei (.inf) für den Zertifikatantrag erstellt werden. Nachfolgend ein Beispiel, welches einen Zertifikatantrag analog zur Kerberos Authentication Zertifikatvorlage erzeugen sollte:

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

[Version] 
Signature="$Windows NT$"

[Strings]
; Die folgende Variable an die Umgebung anpassen
SERVER_FQDN = "CA01.intra.adcslabor.de"

; Nachfolgende Strings nicht bearbeiten
szOID_SUBJECT_ALT_NAME2 = "2.5.29.17"
szOID_ENHANCED_KEY_USAGE = "2.5.29.37"
szOID_KP_RDC_AUTH = "1.3.6.1.4.1.311.54.1.2"

[NewRequest]
; Nach RFC2818 sollte das Subject nicht mehr verwendet werden und darf leer sein (Subject =)
Subject = "CN="
; Der private Schluessel ist nicht exportierbar
Exportable = FALSE
; Das Schluesselpaar wird im lokalen Maschinenspeicher erzeugt
MachineKeySet = True
; Empfohlene Schluessellaengen: 2048, 3072, 4096
; 2048 Bit sollten nur noch bis 2021 verwendet werden
; Vor Erhöhung der Schluessellaenge sollte die Kompatibilitaet sichergestellt sein
KeyLength = 2048
; AT_KEYEXCHANGE
KeySpec = 1
; Digital Signature, Key Encipherment
KeyUsage = 0xA0
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
SMIME = FALSE
RequestType = CMC

[Extensions]
%szOID_SUBJECT_ALT_NAME2% = "{text}dns=%SERVER_FQDN%" %szOID_ENHANCED_KEY_USAGE% = "{text}%szOID_KP_RDC_AUTH%"

Erzeugen des Schlüsselpaars und des Zertifikatantrags

Nun kann anhand dieser Informationsdatei ein Schlüsselpaar und ein Zertifikatantrag erzeugt werden. Die Erstellung erfolgt auf dem Computer als Administrator per Kommandozeile mit nachfolgendem Befehl:

certreq.exe -new <Informationsdatei>.inf <Zertifikatantrag>.req

Der nun erzeugte Zertifikatantrag kann auf Wunsch eingesehen werden mit folgendem Kommandozeilenbefehl:

certutil -dump <Zertifikatantrag>.req 

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 <Zertifikat> 

Aktivieren des Zertifikats und anschließender Funktionstest

Die Zuweisung des Zertifikats zum Remotedesktop-Sitzungshost ist im Artikel "Manuelles Zuweisen eines Remotedesktop (RDP) Zertifikats" beschrieben.

Wie das derzeit verwendete Remotedesktop-Zertifikat identifiziert werden kann ist im Artikel "Identifizieren des aktiven Remotedesktop (RDP) Zertifikats" beschrieben.

Weiterführende Links:

Externe Quellen