在远程管理模式下为 Windows Server 2012(及更高版本)上的 RDP 配置自定义 SSL 证书?

在远程管理模式下为 Windows Server 2012(及更高版本)上的 RDP 配置自定义 SSL 证书?

因此,Windows Server 2012 的发布删除了许多旧的远程桌面相关配置实用程序。特别是,不再有远程桌面会话主机配置实用程序可让您访问 RDP-Tcp 属性对话框,该对话框可让您配置 RDSH 使用的自定义证书。取而代之的是一个漂亮的新整合 GUI,它是新服务器管理器中整体“编辑部署属性”工作流的一部分。问题是,只有安装了远程桌面服务角色,您才能访问该工作流(据我所知)。

这似乎是微软的一点疏忽。当 Windows Server 2012 在默认远程管理模式下运行时,我们如何为其上的 RDP 配置自定义 SSL 证书,而无需不必要地安装远程桌面服务角色?

答案1

事实证明,RDSH 的大部分配置数据都存储在命名空间Win32_TSGeneralSetting中 WMI 的类中root\cimv2\TerminalServices。给定连接的配置证书由名为 的属性上的该证书的 Thumbprint 值引用SSLCertificateSHA1Hash


更新:这是一个通用的 Powershell 解决方案,它抓取并设置计算机个人存储中第一个 SSL 证书的指纹。如果您的系统有多个证书,您应该-Filtergci命令中添加一个选项,以确保您引用正确的证书。我保留了我下面的原始答案以供参考。

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

为了获取指纹值

  1. 打开证书的属性对话框并选择“详细信息”选项卡
  2. 向下滚动到指纹字段并将空格分隔的十六进制字符串复制到记事本等文件中
  3. 删除字符串中的所有空格。您还需要注意并删除有时会在字符串中第一个字符之前复制的非 ASCII 字符。它在记事本中不可见。
  4. 这是您需要在 WMI 中设置的值。它应该看起来像这样:1ea1fd5b25b8c327be2c4e4852263efdb4d16af4

现在您有了指纹值,您可以使用下面一行代码通过 wmic 设置该值:

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

或者如果你喜欢 PowerShell,你可以使用这个:

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

笔记:该证书必须位于计算机帐户的“个人”证书存储中。

答案2

如果您在尝试 Ryan 的解决方案时收到“无效参数”,请确保您使用提升的命令提示符(以管理员身份运行)。

答案3

您需要将您的domain.pfx 指纹保存在一个 txt 文件中SSLCertificateSHA1Hash.txt

然后在 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

相关内容