Passer au contenu

Signer des fichiers RDP en utilisant votre propre certificat du côté client

Pour simplifier la procédure, plusieurs scripts PowerShell ont été écrits à votre disposition. Veuillez changer les valeurs des variables avec les vôtres avant de les utiliser.

Première étape

Vous devrez d'abord créer votre propre certificat de signature, avec une clé privée exportable.

Cela nécessite des privilèges d'administrateur.

Notez que l'empreinte digitale du certificat sera du côté de la configuration de l'utilisateur.

$organization = "MyCompany"
$commonName = "RDP Signer"
$friendlyName = "RDP Signing Certificate"
$pfxPassword = "MyStrongPassword!"
$pfxFilePath = [Environment]::CurrentDirectory + "\signer.pfx"
# In years
$validityDuration = 3
Write-Host Certificate will be created in $pfxFilePath
# Generate the signing certificate
$cert = New-SelfSignedCertificate `
-Type CodeSigningCert `
-Subject "CN=$commonName, O=$organization" `
-KeyUsage DigitalSignature `
-KeyExportPolicy Exportable `
-FriendlyName $friendlyName `
-CertStoreLocation "Cert:\LocalMachine\My" `
-NotAfter (Get-Date).AddYears($validityDuration)
# Generate the pfx file to import on client computer
$thumb = $cert.Thumbprint
Write-Host Certificate thumbprint: $thumb
$pwd = ConvertTo-SecureString -String $pfxPassword -Force -AsPlainText
Get-ChildItem -Path Cert:\LocalMachine\My\$thumb |
Export-PfxCertificate -FilePath "$pfxFilePath" -Password $pwd

Deuxième étape (sur le poste de travail de l'utilisateur)

Une fois le certificat de signature généré, afin que votre client puisse l'utiliser, il devra faire ce qui suit :

  • importer le certificat dans le magasin “CurrentUser\My” pour pouvoir signer des fichiers rdp avec rdpsign en utilisant l'empreinte du certificat
  • importer le certificat dans le magasin “CurrentUser\Root” afin que les rdp signés avec ce certificat soient reconnus
$pfxFilePath = [Environment]::CurrentDirectory + "\signer.pfx"
$pfxPassword = "MyStrongPassword!"
$pwd = ConvertTo-SecureString -String $pfxPassword -Force -AsPlainText
# Import pfx in CurrentUser\My certificate store to be able to sign with rdpsign using the thumbprint
Import-PfxCertificate -FilePath "$pfxFilePath" -CertStoreLocation "Cert:\CurrentUser\My" -Password $pwd
# Import pfx to the trusted root certificate authority of the user, so that signed rdp with this certificate are recognized.
# Note: this triggers a windows confirmation popup
Import-PfxCertificate -FilePath "$pfxFilePath" -CertStoreLocation "Cert:\CurrentUser\Root" -Password $pwd

Troisième étape (Sur le poste de travail de l'utilisateur)

Pour que l'ordinateur fasse pleinement confiance au fichier rdp signé avec ce certificat, vous devrez l'ajouter dans la liste des empreintes digitales de certificats de confiance du registre.
emplacement : “HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Terminal Services”
clé : “TrustedCertThumbprints”
type : chaîne

Remarque : puisque nous écrivons ici dans HKEY_LOCAL_MACHINE, des privilèges d'administrateur seront nécessaires.

$thumbprint = "YOUR_THUMBPRINT"
$regPath = "HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services"
$keyName = "TrustedCertThumbprints"
$current = (Get-ItemProperty -Path $regPath -Name $keyName -ErrorAction SilentlyContinue).$keyName
$newValue = if ([string]::IsNullOrWhiteSpace($current)) { $thumbprint } else { "$current,$thumbprint" }
New-Item -Path $regPath -Force | Out-Null
New-ItemProperty -Path $regPath -Name $keyName -Value $newValue -PropertyType String -Force | Out-Null

Quatrième étape (sur le poste de travail de l'utilisateur)

Enfin, pour indiquer au programme “Connection Client” de signer en utilisant votre certificat et de signer avec son empreinte digitale, vous devrez définir la clé de registre suivante : emplacement : “HKEY_CURRENT_USER\Software\Digital River\ConnectionClient”
OU
emplacement : “HKEY_LOCAL_MACHINE\Software\Digital River\ConnectionClient”

clé : “CertThumbprint”
type : chaîne
valeur : VOTRE_IMPRESSION_DIGITALE

$thumbprint = "YOUR_THUMBPRINT"
New-ItemProperty -Path "HKCU:\Software\Digital River\ConnectionClient" -Name "CertThumbprint" -PropertyType String -Value $thumbprint -Force