Pular para o conteúdo

Assine arquivos RDP usando seu próprio certificado no lado do cliente

Para simplificar o procedimento, vários scripts do PowerShell foram escritos à sua disposição. Por favor, altere os valores das variáveis com os seus próprios antes de usá-los.

Primeiro passo

Você precisará primeiro criar seu próprio certificado de assinatura, com uma chave privada exportável.

Isto requer privilégios de administrador.

Observe que a impressão digital do certificado estará no lado da configuração do usuário.

$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

Segunda etapa (Na estação de trabalho do usuário)

Uma vez que o certificado de assinatura é gerado, para que seu cliente possa usá-lo, ele precisará fazer o seguinte:

  • importe o certificado no repositório “CurrentUser\My” para poder assinar arquivos rdp com rdpsign usando a impressão digital do certificado
  • importe o certificado no repositório “CurrentUser\Root” para que o rdp assinado com este certificado seja reconhecido
$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

Terceiro passo (No workstation do usuário)

Para fazer com que o computador confie totalmente no arquivo rdp assinado com este certificado, você precisará adicioná-lo na lista de impressão digital de certificados confiáveis do registro.
localização: “HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Terminal Services”
chave: “TrustedCertThumbprints”
tipo: string

Nota: como escrevemos aqui em HKEY_LOCAL_MACHINE, serão necessárias permissões de administrador.

$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

Quarta etapa (na estação de trabalho do usuário)

Finalmente, para informar ao programa “Connection Client” para assinar usando seu certificado e assinar com sua impressão digital, você precisará definir a seguinte chave de registro: localização: “HKEY_CURRENT_USER\Software\Digital River\ConnectionClient”
OU
localização: “HKEY_LOCAL_MACHINE\Software\Digital River\ConnectionClient”

chave: “CertThumbprint”
tipo: string
valor: SUA_IMPRESSÃO_DIGITAL

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