¿Configurar un certificado SSL personalizado para RDP en Windows Server 2012 (y posterior) en modo de administración remota?

53

Por lo tanto, el lanzamiento de Windows Server 2012 ha eliminado muchas de las antiguas utilidades de configuración relacionadas con el escritorio remoto. En particular, no hay más utilidad de configuración de host de sesión de escritorio remoto que le dio acceso al cuadro de diálogo de propiedades RDP-Tcp que le permite configurar un certificado personalizado para que lo use el RDSH. En su lugar, hay una nueva GUI consolidada que forma parte del flujo de trabajo general de "editar propiedades de implementación" en el nuevo Administrador del servidor. El problema es que solo obtiene acceso a ese flujo de trabajo si tiene instalada la función Servicios de escritorio remoto (por lo que puedo decir).

Esto parece un poco un descuido por parte de Microsoft. ¿Cómo podemos configurar un certificado SSL personalizado para RDP en Windows Server 2012 cuando se ejecuta en el modo de Administración remota predeterminado sin instalar innecesariamente la función de Servicios de escritorio remoto?

Ryan Bolger
fuente
Relacionado -> superuser.com/questions/1093159/…
FreeSoftwareServers

Respuestas:

81

Resulta que gran parte de los datos de configuración para RDSH se almacenan en la Win32_TSGeneralSettingclase en WMI en el root\cimv2\TerminalServicesespacio 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 -Filteropción al gcicomando 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

  1. Abra el cuadro de diálogo de propiedades para su certificado y seleccione la pestaña Detalles
  2. Desplácese hacia abajo hasta el campo Huella digital y copie la cadena hexadecimal delimitada por espacios en algo como el Bloc de notas
  3. 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.
  4. 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.

Ryan Bolger
fuente
3
Solo quería agregar que esto me salvó del colapso puro. Gracias. Instalar los roles y reiniciar servidores como se sugiere en technet y similares es ridículo. Incluso entonces, una vez que instala el certificado SSL en RD Gateway Manager, no se transfiere al inicio de sesión de administrador remoto.
Papa
2
Muchas gracias por esto. Debo haber buscado en todo Google antes de encontrar esto. Hay demasiados resultados que me dicen que instale "Servicios de escritorio remoto" a través de "Agregar funciones y características", pero para hacerlo es necesario que se una a un dominio.
Sethi
2
Si trato de hacerlo usando su script PS, obtengo "Parámetro inválido". Mismo problema si también lo hago manualmente ...
deed02392
1
Me estaba argumento no válido el uso de todos los métodos hasta que haya certificado reimportada incluyendo las claves privadas. Error simple
toffitomek
2
Yo otra vez: D También recibo el error "Parámetro inválido" en Powershell cuando se ejecuta wmic. Acabo de ver la nota en la parte inferior. Asegúrese de que el certificado también esté en la tienda Personal. La mía estaba en la tienda de alojamiento web esta vez ...
Sethi
4

Si obtiene un "Parámetro no válido" cuando prueba la solución de Ryan, asegúrese de estar utilizando el símbolo del sistema elevado (ejecutar como administrador).

David Literak
fuente
¡No puedo creer que esto no tenga voto!
Adrian Godong
0

Necesita su domain.pfx & la huella digital en un archivo txt SSLCertificateSHA1Hash.txt.

Luego ejecute esto en 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
FreeSoftwareServers
fuente