59 votes

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

La sortie de Windows Server 2012 a supprimé un grand nombre d'anciens utilitaires de configuration liés au bureau à distance. En particulier, il n'y a plus de Configuration de l'hôte de la session Remote Desktop qui vous donne accès à la boîte de dialogue des propriétés de RDP-Tcp qui vous permet de configurer un certificat personnalisé à utiliser par le RDSH. Il est remplacé par 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 est que vous n'avez accès à ce flux de travail que si vous avez le rôle Services Bureau à distance installé (pour autant que je sache).

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

87voto

Ryan Bolger Points 16332

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


UPDATE : Voici une solution Powershell généralisée qui récupère et définit l'empreinte du premier certificat SSL dans la mémoire personnelle de l'ordinateur. Si votre système possède plusieurs certs, vous devez ajouter une option -Filter à l'option gci pour être sûr de référencer le bon certificat. J'ai laissé ma réponse originale intacte en 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"}

Afin d'obtenir la valeur de l'empreinte digitale

  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 l'écran jusqu'au champ Empreinte digitale et copiez la chaîne hexagonale délimitée par des espaces dans un logiciel tel que le Bloc-notes.
  3. Supprimez tous les espaces de la chaîne. Vous devrez également faire attention et supprimer un caractère non ASCII qui est parfois copié juste avant le premier caractère de la chaîne. Il n'est pas visible dans le Bloc-notes.
  4. C'est la valeur que vous devez définir dans WMI. Elle doit ressembler à quelque chose comme ceci : 1ea1fd5b25b8c327be2c4e4852263efdb4d16af4 .

Maintenant que vous avez la valeur de l'empreinte digitale, voici une ligne simple que vous pouvez utiliser pour définir la valeur en utilisant 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"}

Note : le certificat doit se trouver dans le magasin de certificats "personnel" du compte de l'ordinateur.

5voto

davidpv Points 11

Si vous obtenez "Invalid Parameter" lorsque vous essayez la solution de Ryan, assurez-vous que vous utilisez une invite de commande élevée (exécutez en tant qu'administrateur).

0voto

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

Ensuite, exécutez 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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X