Resulta que gran parte de los datos de configuración para RDSH se almacenan en la Win32_TSGeneralSetting
clase en WMI en el root\cimv2\TerminalServices
espacio de nombres. El certificado configurado para una conexión determinada está referenciado por el valor de huella digital de ese certificado en una propiedad llamada SSLCertificateSHA1Hash
.
ACTUALIZACIÓN: Aquí hay una solución Powershell generalizada que toma y establece la huella digital del primer certificado SSL en la tienda personal de la computadora. Si su sistema tiene varios certificados, debe agregar una -Filter
opción al gci
comando para asegurarse de que hace referencia al certificado correcto. Dejé mi respuesta original intacta debajo de esto para referencia.
# 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"}
Para obtener el valor de la huella digital
- Abra el cuadro de diálogo de propiedades para su certificado y seleccione la pestaña Detalles
- Desplácese hacia abajo hasta el campo Huella digital y copie la cadena hexadecimal delimitada por espacios en algo como el Bloc de notas
- Eliminar todos los espacios de la cadena. También querrá tener cuidado y eliminar un carácter no ascii que a veces se copia justo antes del primer carácter de la cadena. No es visible en el Bloc de notas.
- Este es el valor que necesita establecer en WMI. Debería verse así: 1ea1fd5b25b8c327be2c4e4852263efdb4d16af4 .
Ahora que tiene el valor de huella digital, aquí hay una línea que puede usar para establecer el valor usando wmic:
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"
O si PowerShell es lo tuyo, puedes usar esto en su lugar:
$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="THUMBPRINT"}
Nota: el certificado debe estar en el almacén de certificados 'Personal' para la cuenta de la computadora.