Neues RDP Zertifikat über die Kommandozeile erstellen und zuweisen

Das Problem war, dass ich nur noch Zugriff auf die Shell des Servers hatte und das Default Zertifikat vom Kunden gelöscht wurde. Es handelte sich um einen VPS, der außer der Shell und Remotedesktop keine Verwaltungsmöglichkeit bietet. Eine Anmeldung über RDP war nicht mehr möglich.

Ursachenanalyse

Um zu prüfen, was genau mit dem Zertifikat los war, habe ich mir den Zertifikatsspeicher des Servers angesehen. In diesem können Werte wie Ablaufdatum und beispielsweise die Gültigkeit etc, eingesehen werden.

Dies Ausgabe meldete, nichts. Es war kein Zertifikat mehr im Speicher vorhanden. Der Kunde hatte für den Server ein Zertifikat beantragt, eingebunden und daraufhin dem RDP Host zugewiesen. Offenbar hatte er danach das Standard Zertifikat gelöscht. Sonst hätte man noch auf das alte wechseln können.

In diesem Fall befand sich kein Zertifikat mehr im Zertifikatsspeicher, aber das Remotedesktopprotokoll hat dort eines erwartet.

Ein neues Zertifikat erstellen

Ich musste demnach erst einmal ein neues selbst signiertes Zertifikat erstellen und es dem korrekte Zertifikatsspeicher zuweisen.

Hierfür hat Microsoft das Tool certreq.exe vorgesehen. Mit dem folgenden Befehl lässt sich ein Zertifikat erstellen:

Hierfür muss noch eine Policy Inf Datei erzeugt werden. Das Tool kommt immer dann zum Einsatz wenn Zertifikatsanfragen erstellt werden. Wird bei dem Befehl Oben keine Ausgabedatei angegeben, fragt ein Windowsdialog nach einem Speicherort und Namen. Da ich hier keine grafische Oberfläche zur Verfügung hatte, musste ich dies direkt mit angeben.

In diesem Fall muss in der Policy.inf aber ein anderer Parameter mit angegeben werden

Wichtig ist der EIntrag RequestType = Cert. Nur damit wird ein selbst signiertes Zertifikat erstellt. Genauere Informationen über die einzelnen EInträge erhält man in der offiziellen Microsoft Dokumentation: https://technet.microsoft.com/en-us/library/dn296456.aspx

Nun liegt unter c:\cert\ ein neues selbst signiertes Zertifikat.

Einbinden des neuen Zertifikats in den Zertifikatsspeicher

Das Zertifikat ist nun vorhanden und muss jetzt in den Speicher eingelesen werden.

Nach kurzer Zeit wird eine Bestätigung ausgegeben.

Zuweisen des Zertifikates zum RDP Host

Dies ist relativ einfach. Hier hat Microsoft MVP Sergey Kuzin in seinem Blog rund um Remote Desktop Dienst ein Script veröffentlicht, welches ein bestimmtes Zertifikat an den RDP Host bindet oder wenn kein Fingerabdruck mit angegeben wird, das Standard Zertifikat einbindet.

Im folgenden Blogeintrag führt er das Script zum Ende hin auf und beschreibt die Funktionalität:

http://blogs.msdn.com/b/rds/archive/2010/04/09/configuring-remote-desktop-certificates.aspx

Mit dem folgenden Befehl habe ich das Zertifikat dann zugewiesen.

Das Einbinden kann auch manuell erfolgen. Wie dies erfolgt hat Microsoft in einem Artikel auf der Webseite veröffentlicht: https://support.microsoft.com/en-us/kb/3042780

Eine Anmeldung am Server war nun wieder möglich.