Zum Inhalt springen

RDP-Dateien mit Ihrem eigenen Zertifikat auf der Client-Seite signieren

Um das Verfahren zu vereinfachen, wurden mehrere PowerShell-Skripte zu Ihrer Verfügung geschrieben. Bitte ändern Sie die Werte der Variablen zuerst in Ihre eigenen, bevor Sie sie verwenden.

Erster Schritt

Sie müssen zuerst Ihr eigenes Signierungszertifikat mit einem exportierbaren privaten Schlüssel erstellen.

Dies erfordert Administratorrechte.

Beachten Sie, dass der Fingerabdruck des Zertifikats auf der Benutzereinstellungsseite angezeigt wird.

$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

Zweiter Schritt (Auf dem Benutzerarbeitsplatz)

Sobald das Signaturzertifikat erstellt ist, muss Ihr Kunde Folgendes tun, um es zu verwenden:

  • Zertifikat im „CurrentUser\My“-Store importieren, um RDP-Dateien mit rdpsign unter Verwendung des Zertifikat-Fingerabdrucks signieren zu können.
  • Zertifikat im „CurrentUser\Root“-Store importieren, damit signierte RDP mit diesem Zertifikat erkannt werden.
$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

Dritter Schritt (Auf dem Benutzerarbeitsplatz)

Um den Computer dazu zu bringen, die mit diesem Zertifikat signierte rdp-Datei vollständig zu vertrauen, müssen Sie sie in die Liste der vertrauenswürdigen Zertifikat-Thumbprints der Registrierung hinzufügen.
Standort: “HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Terminal Services”
key: “VertrauenswürdigeZertifikatDaumenabdrücke”
Typ: Zeichenfolge

Hinweis: Da wir hier in HKEY_LOCAL_MACHINE schreiben, werden Administratorrechte benötigt.

$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

Vierter Schritt (auf der Benutzerarbeitsstation)

Schließlich müssen Sie den "Connection Client"-Programm anweisen, mit Ihrem Zertifikat zu signieren und mit seinem Fingerabdruck zu signieren. Dazu müssen Sie den folgenden Registrierungsschlüssel festlegen: Standort: "HKEY_CURRENT_USER\Software\Digital River\ConnectionClient"
ODER
Standort: “HKEY_LOCAL_MACHINE\Software\Digital River\ConnectionClient”

key: “Zertifikatfingerabdruck”
Typ: Zeichenfolge
Wert: IHR_FINGERABDRUCK

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