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证书拷贝到服务端,双击。之后按引导导入证书到“个人”文件夹的“证书”中。
- 注意要把证书安装到本地计算机,而不是当前用户。
- 把证书放到“个人”
完成后应该是这样的(在个人的证书里有刚刚的证书):
四、更新远程桌面服务端配置
双击证书管理右侧的证书可以看到证书的详细信息,获取其中的指纹:
然后以管理员身份在Powershell中运行:
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="<上面获取的证书指纹>"
到此,就完成了对Windows远程桌面服务的证书配置。