平常用 Windows 远程桌面访问服务器的时候总是会遇到证书警告,像这样:

这是因为服务器上的远程桌面连接用的证书通常是服务器自己给自己颁发的,根本不受 Windows 信任。而我手头已经有了来自认证机构的受 Windows 信任的域名证书并且已经添加到了服务器上,所以如果我可以让服务器使用那个证书来建立远程桌面连接,那么就可以消除那个证书警告,确保整个连接是可靠的。

经过一顿搜索,终于在 Serverfault 找到了正确的处理方法,并且实践成功。

现在把步骤列在这里备忘。以下步骤是在 Windows Server 2016 上实践的。

  1. 将服务器的名字改为证书关联的域名。比如你的证书可以关联到 myserver.abc.com,那么就把服务器的名字改为 myserver.abc.com,更改方法如下图:

  2. 安装域名证书到服务器。注意要安装到 Computer Account,不要安装到 User Account。然后安装到 Personal 分类下。

  3. 得到证书指纹。从此步骤开始,所有操作都是 Powershell 命令,运行于 Administrator 权限下的 Powershell 环境。

    Get-ChildItem "Cert:\LocalMachine\My"

    把证书的 Thumbprint 值复制下来,后面要用到。

  4. 设置一个变量保存 “RD Session Host RDP listener” 的 WMI 路径

    $PATH = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices)

  5. 最后一步,更改 RDP listener 的证书设置

    Set-WmiInstance -Path $PATH -argument @{SSLCertificateSHA1Hash="thumbprint"},其中, thumbprint 就是在第3步中得到的值。

大功告成!

留言

2019-07-21