Configurer un certificat SSL personnalisé pour RDP sur Windows Server 2012 (et versions ultérieures) en mode d'administration à distance?

53

La version de Windows Server 2012 a donc supprimé bon nombre des anciens utilitaires de configuration liés à Remote Desktop. En particulier, il n'y a plus d' utilitaire de configuration d'hôte de session Bureau à distance qui vous a donné accès à la boîte de dialogue de propriétés RDP-Tcp qui vous permet de configurer un certificat personnalisé à utiliser par RDSH. À sa place se trouve une nouvelle interface graphique consolidée qui fait partie du flux de travail global "Modifier les propriétés de déploiement" dans le nouveau gestionnaire de serveur. Le problème, c'est que vous ne pouvez accéder à ce flux de travail que si le rôle Services Bureau à distance est installé (pour autant que je sache).

Cela semble être un peu un oubli de la part de Microsoft. Comment pouvons-nous configurer un certificat SSL personnalisé pour RDP sur Windows Server 2012 lorsqu'il s'exécute en mode d'administration à distance par défaut sans installer inutilement le rôle Services de bureau à distance?

Ryan Bolger
la source
Relatif -> superuser.com/questions/1093159/…
FreeSoftwareServers

Réponses:

81

Il s'avère qu'une grande partie des données de configuration pour RDSH est stockée dans la Win32_TSGeneralSettingclasse dans WMI dans l' root\cimv2\TerminalServicesespace de noms. Le certificat configuré pour une connexion donnée est référencé par la valeur Thumbprint de ce certificat sur une propriété appelée SSLCertificateSHA1Hash.


UPDATE: Voici une solution généralisée de Powershell qui enregistre et définit l'empreinte du premier certificat SSL dans le magasin personnel de l'ordinateur. Si votre système comporte plusieurs certificats, vous devez ajouter une -Filteroption à la gcicommande pour vous assurer de référencer le certificat correct. J'ai laissé ma réponse originale intacte au-dessous de ceci pour référence.

# get a reference to the config instance
$tsgs = gwmi -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'"

# grab the thumbprint of the first SSL cert in the computer store
$thumb = (gci -path cert:/LocalMachine/My | select -first 1).Thumbprint

# set the new thumbprint value
swmi -path $tsgs.__path -argument @{SSLCertificateSHA1Hash="$thumb"}

Pour obtenir la valeur d'empreinte

  1. Ouvrez la boîte de dialogue des propriétés de votre certificat et sélectionnez l'onglet Détails.
  2. Faites défiler jusqu'au champ Empreinte numérique et copiez la chaîne hexagonale délimitée par des espaces dans quelque chose comme Notepad.
  3. Supprimer tous les espaces de la chaîne. Vous voudrez également surveiller et supprimer un caractère non ASCII qui est parfois copié juste avant le premier caractère de la chaîne. Ce n'est pas visible dans le bloc-notes.
  4. C'est la valeur que vous devez définir dans WMI. Cela devrait ressembler à quelque chose comme ça: 1ea1fd5b25b8c327be2c4e4852263efdb4d16af4 .

Maintenant que vous avez la valeur empreinte numérique, voici une ligne que vous pouvez utiliser pour définir la valeur à l'aide de wmic:

wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"

Ou si PowerShell est votre truc, vous pouvez utiliser ceci à la place:

$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="THUMBPRINT"}

Remarque: le certificat doit figurer dans le magasin de certificats 'Personnel' du compte de l'ordinateur.

Ryan Bolger
la source
3
Je voulais juste ajouter que cela m'a sauvé de la fusion pure. Je vous remercie. Installer les rôles et redémarrer les serveurs comme suggéré dans technet et autres est ridicule. Même dans ce cas, une fois que vous avez installé le certificat SSL dans le gestionnaire de passerelle RD, il ne sera pas transféré à la connexion de l'administrateur distant.
Papa
2
Merci beaucoup pour cela. J'ai dû chercher dans tous Google avant de trouver cela. Il y a trop de résultats qui me disent d'installer "Services Bureau à distance" via "Ajouter des rôles et des fonctionnalités", mais vous devez pour cela rejoindre un domaine.
Sethi
2
Si j'essaie de le faire en utilisant votre script PS, le message "Paramètre invalide" apparaît. Même problème si je le fais manuellement, aussi ...
deed02392
1
Je recevais Invalid argument en utilisant toutes les méthodes jusqu'à ce que j'ai certificat réimporté y compris les clés privées. Simple erreur.
toffitomek
2
Moi aussi: D Je reçois aussi l'erreur "Paramètre invalide" dans Powershell lors de l'exécution wmic. Je viens de voir la note en bas. Assurez-vous que le certificat se trouve également dans le magasin Personnel. Le mien était dans le magasin d'hébergement Web cette fois ...
Sethi
4

Si vous obtenez "Paramètre non valide" lorsque vous essayez la solution de Ryan, assurez-vous que vous utilisez l'invite de commande avec privilège (exécutée en tant qu'administrateur).

David Literak
la source
Je ne peux pas croire que cela n'a pas de vote positif!
Adrian Godong
0

Vous avez besoin de votre domain.pfx & l'empreinte digitale dans un fichier txt SSLCertificateSHA1Hash.txt.

Puis lancez ceci dans CMD:

pushd %~dp0
cls
::FreeSoftwareServers.com

certutil.exe -p "" -importpfx "%~dp0domain.pfx"
set /p FingerPrint=<"%~dp0SSLCertificateSHA1Hash.txt"
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="%FingerPrint%"
icacls.exe "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\*" /grant "NETWORK SERVICE":R
shutdown /r /t 5
FreeSoftwareServers
la source