在远程pipe理模式下为Windows Server 2012上的RDPconfiguration自定义SSL证书?

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

这对微软来说似乎有些疏忽了。 我们如何在Windows Server 2012上以默认的远程pipe理模式运行时为RDPconfiguration自定义SSL证书,而不必不必要地安装远程桌面服务angular色?

    事实certificate,RDSH的大部分configuration数据存储在root\cimv2\TerminalServices名称空间的WMI中的Win32_TSGeneralSetting类中。 给定连接的已configuration证书由名为SSLCertificateSHA1Hash的属性上的该证书的指纹值引用。


    更新:这是一个广泛的Powershell解决scheme,抓取和设置计算机的个人存储中的第一个SSL证书的指纹。 如果您的系统有多个证书,则应该在gci命令中添加一个-Filter选项,以确保您引用了正确的证书。 我已经把原来的答案保留下来作为参考。

     # 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. 打开证书的属性对话框,然后select详细信息选项卡
    2. 向下滚动到指纹字段,并将空格分隔的hexstring复制到记事本中
    3. 删除string中的所有空格。 您还需要注意并删除非ASCII字符,该字符有时会在string中的第一个字符之前被复制。 在记事本中不可见。
    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"} 

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

    有没有办法让服务器强制使用有效的客户端证书? 似乎我可以从RDP客户端中select忽略无效的证书。 如果证书无效,我希望客户端无法连接。