在远程管理模式下在Windows Server 2012上为RDP配置自定义SSL证书?

Modified on: Wed, 13 Nov 2019 09:20:02 +0800

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

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

最佳答案

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


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

# 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. 之类的内容中
  4. 从字符串中删除所有空格。您还需要注意并删除有时会在字符串中的第一个字符之前复制的非ascii字符。它在记事本中不可见。
  5. 这是您需要在WMI中设置的值。它看起来应该是这样的: 1ea1fd5b25b8c327be2c4e4852263efdb4d16af4
  6. 醇>

    现在您已经掌握了指纹值,这里有一个单线程,您可以使用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"}
    

    注意:证书必须位于计算机帐户的“个人”证书存储区中。

作者:,Ryan Bolger

相关问答

添加新评论