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 -AsPlainTextGet-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 thumbprintImport-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 popupImport-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-NullNew-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