Configurare il certificato SSL personalizzato per RDP su Windows Server 2012 (e versioni successive) in modalità Amministrazione remota?


53

Quindi il rilascio di Windows Server 2012 ha rimosso molte delle vecchie utility di configurazione relative al Desktop remoto. In particolare, non esiste più l' utilità di configurazione dell'host di sessione Desktop remoto che ti ha dato accesso alla finestra di dialogo delle proprietà RDP-Tcp che ti consente di configurare un certificato personalizzato da utilizzare per RDSH. Al suo posto c'è una nuova e carina GUI consolidata che fa parte del flusso di lavoro complessivo "modifica proprietà di distribuzione" nel nuovo Server Manager. Il problema è che puoi accedere a quel flusso di lavoro solo se hai installato il ruolo di Servizi Desktop remoto (per quanto ne so).

Questo sembra un po 'una svista da parte di Microsoft. Come possiamo configurare un certificato SSL personalizzato per RDP su Windows Server 2012 quando è in esecuzione nella modalità di amministrazione remota predefinita senza installare inutilmente il ruolo di Servizi Desktop remoto?


Risposte:


81

Si scopre che gran parte dei dati di configurazione per RDSH sono memorizzati nella Win32_TSGeneralSettingclasse in WMI nello root\cimv2\TerminalServicesspazio dei nomi. Il certificato configurato per una determinata connessione è indicato dal valore Thumbprint di quel certificato su una proprietà chiamata SSLCertificateSHA1Hash.


AGGIORNAMENTO: Ecco una soluzione Powershell generalizzata che acquisisce e imposta l'identificazione personale del primo certificato SSL nel negozio personale del computer. Se il tuo sistema ha più certificati, devi aggiungere -Filterun'opzione al gcicomando per assicurarti di fare riferimento al certificato corretto. Ho lasciato intatta la mia risposta originale qui sotto come riferimento.

# 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"}

Al fine di ottenere il valore di identificazione personale

  1. Apri la finestra di dialogo delle proprietà per il tuo certificato e seleziona la scheda Dettagli
  2. Scorri verso il basso fino al campo Thumbprint e copia la stringa esadecimale delimitata da spazio in qualcosa come Blocco note
  3. Rimuovi tutti gli spazi dalla stringa. Ti consigliamo anche di fare attenzione e rimuovere un carattere non ascii che a volte viene copiato appena prima del primo carattere nella stringa. Non è visibile in Blocco note.
  4. Questo è il valore che devi impostare in WMI. Dovrebbe essere simile a questo: 1ea1fd5b25b8c327be2c4e4852263efdb4d16af4 .

Ora che hai il valore di identificazione personale, ecco un one-liner che puoi usare per impostare il valore usando wmic:

wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"

O se PowerShell fa per te, puoi invece usarlo:

$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="THUMBPRINT"}

Nota: il certificato deve trovarsi nell'archivio certificati "Personale" per l'account Computer.


3
Volevo solo aggiungere che questo mi ha salvato dal puro tracollo. Grazie. Installare i ruoli e riavviare i server come suggerito all'interno di technet e simili è ridicolo. Anche allora, una volta installato il certificato SSL in RD Gateway Manager, non viene trasferito al login dell'amministratore remoto.
Papa,

2
Grazie mille per questo. Devo aver cercato tutto Google prima di averlo trovato. Ci sono troppi risultati che mi dicono di installare "Servizi Desktop remoto" tramite "Aggiungi ruoli e funzionalità", ma per farlo devi entrare in un dominio.
Sethi,

2
Se provo a farlo usando il tuo script PS ottengo "Parametro non valido". Stesso problema se lo faccio anche manualmente ...
deed02392

1
Stavo ottenendo argomento non valido utilizzando tutti i metodi fino a quando non ho reimportato il certificato comprese le chiavi private. Semplice errore.
toffitomek,

2
Di nuovo io: D Ricevo anche l'errore "Parametro non valido" in Powershell durante l'esecuzione wmic. Ho appena visto la nota in fondo. Assicurati che il certificato sia anche nel negozio personale. Il mio era nel negozio di Web Hosting questa volta ...
Sethi,

4

Se ricevi "Parametro non valido" quando provi la soluzione di Ryan, assicurati di utilizzare il prompt dei comandi con privilegi elevati (esegui come amministratore).


Non riesco a credere che questo non abbia alcun voto!
Adrian Godong,

0

Hai bisogno della tua domain.pfx e dell'impronta digitale in un file txt SSLCertificateSHA1Hash.txt.

Quindi eseguilo in CMD:

pushd %~dp0
cls
::FreeSoftwareServers.com

certutil.exe -p "" -importpfx "%~dp0domain.pfx"
set /p FingerPrint=<"%~dp0SSLCertificateSHA1Hash.txt"
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="%FingerPrint%"
icacls.exe "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\*" /grant "NETWORK SERVICE":R
shutdown /r /t 5
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.