因此,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"}
为了获得指纹值
现在您已经拥有了指纹值,下面是一个可以使用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忽略无效的证书。 如果证书无效,我希望客户端无法连接。