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
- Ouvrez la boîte de dialogue des propriétés de votre certificat et sélectionnez l'onglet Détails.
- 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.
- 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.
- 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.