Windows远程桌面使用Let‘s encrypt证书

Windows远程桌面是支持加密的。在不配置的情况下,Windows会自己给自己签一个证书。但这个证书显然在客户端连接的时候,默认是不信任的。

虽然的确可以在客户端信任这个自签的证书。但这样做的缺点是,在各种不同的客户端设备中都需要信任一次这个自签的证书(比如Android里微软官方的Remote Desktop 8)。

因为个人是使用的let's encrypt的证书,所以就记录一下如何把let's encrypt签的证书设置到windows远程桌面的服务端。


一、准备工作

一个Let's encrypt的证书。Let‘s encrypt具体怎么签一个证书下来,这个就不多赘述了。这里主要是同步一下后续步骤用到的证书的情况。首先证书应该都是pem证书,且证书显然应该包含最终客户端访问服务端机器的域名。比如windows.xloypaypa.pub
证书文件夹应该包含以下内容:

.
├── cert.pem
├── chain.pem
├── fullchain.pem
├── privkey.pem
└── README

二、转pfx证书

pfx证书是同时包含公钥和私钥的证书。我个人不清楚windows远程桌面能不能直接通过一对pem文件来完成证书配置。但反正转成pfx也不是什么困难的事情。只需要一行命令:

openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem

然后给一个密码就可以了。


三、安装pfx证书到服务端

把这个pfx证书拷贝到服务端,双击。之后按引导导入证书到“个人”文件夹的“证书”中。

  1. 注意要把证书安装到本地计算机,而不是当前用户。
  2. 把证书放到“个人”

完成后应该是这样的(在个人的证书里有刚刚的证书):


四、更新远程桌面服务端配置

双击证书管理右侧的证书可以看到证书的详细信息,获取其中的指纹:

然后以管理员身份在Powershell中运行:

wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="<上面获取的证书指纹>"


到此,就完成了对Windows远程桌面服务的证书配置。