RDP Zertifikat setzen mit Windows 2012 R2

2013-09-03 | Christoph Wilfing

Ein RDP Zertifikat setzen ist jetzt grad keine grosse Herausforderung. Gibts ja ein tolles Tool genannt tsconfig.msc – ruft man das auf, kann man auf den RDP Connection Settings einfach das Zertifikat einstellen. Ähm, nein.

Unter Windows 2012 R2 gibts kein tsconfig.msc mehr. Gut – wir sagen jetzt mal, alles kein Problem, kann man alles per Policy ja auch konfigurieren. Da gibts einen wirklich guten Blog Eintragwie man das per Policy setzt sogar inklusive hauseigener CA Template Config damit das Ganze auch schön sicher ist. Supa Sache und würd ich jedem empfehlen im Prinzip sogar für alle Server.

image

Das funktioniert natürlich auch für Windows Server 2012 R2. Aber – was, wenn Sie eine Terminal Services Farm mit Connection Broker inklusive IP Redirection konfigurieren wollen. Da ist es nämlich ohne einen Hardware Load Balancer einfach per DNS Round Robin möglich ein Load Balance zu erreichen. Das funktioniert auch recht gut einzig, man hat einen gemeinsamen Namen (like tsfarm.contoso.com) der per DNS auf mehrere Hosts geschickt wird. Verbindet sich der Client dorthin, löst er den Namen auf, verbindet sich auf den Host und ??? JA – bekommt eine Zertifikatsfehlermeldung.

Wenn man per Policy wie oben angegeben das Zertifikat verteilt, wird automatisch vom Template der Servername (FQDN) ins Zertifikat als Subject eingetragen. Damit kann man sich per DNS Round Robin nicht auf einen gemeinsamen Namen verbinden. D.h. wir brauchen trotzdem ein Custom Certificate das jetzt leicht zu bekommen ist, aber schwer zu konfigurieren. Ich hab keine GUI gefunden, auch im Servermanager gibt es zwar für RDP Deployment eigene Wizards / Role Based Deployments, aber _dieses_ Zertifikat konnte ich nicht konfigurieren.

Aber – es gibt für alles Lösungen und wie bei mir bekannt – meistens hilft ein Script weiter.

$pass = ConvertTo-SecureString "PasswordFoThePFXFile" -AsPlainText -Force
$thumbprint = (Import-PfxCertificate -Password $pass –CertStoreLocation

cert:\localMachine\my -FilePath '\\server\share\certificatewithprivatekey.pfx').thumbprint

$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path

Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="$Thumbprint"}

Mit diesem kurzen Scripterl kann man ein Zertifikat einfach importieren und per WMI Command (natürlich auch per WBEMTest möglich) als Zertifikat für die TS Settings festlegen.

Lustig – das war auch auf einer Diskussion ein Thema und man war der Meinung das Script geht nicht. Leider hat UAC da etwas reingespuckt, also – immer brav als Admin starten!

LG Christoph

Categories: Microsoft, PowerShell, Windows

Source: https://blog.atwork.at/post/RDP-Zertifikat-setzen-mit-Windows-2012-R2