使用SSL证书为Windows(非Server)远程桌面RDP连接加密

远程桌面连接中“无法验证此远程计算机的身份。”这一问题,具体症状如下图所示,

本文主要介绍非Server系统中无法使用专用工具,转而修改注册表的方法
本文假定您已对SSL证书有一定的了解,或最好已经成功的申请到了服务器SSL/TLS证书
本文演示使用免费的StartSSL证书,其他机构签发的证书大同小异
使用SSL证书为Windows非Server远程桌面RDP连接加密
原理分析
操作步骤
第一步 导入证书
第二步 分配权限
第三步 编辑注册表

原理分析
也不知是从哪一个版本开始,微软开始为远程桌面加入了SSL加密功能,并且是默认开启。
导致这个问题的原因实际是系统使用了一个自签名的默认证书,而这个自签名证书对于客户端来说是不可信的,也就是说无法用于证明服务端的身份,客户端自然就会报告其不安全。
那么解决的思路就有了,那就是我们为服务端添加一个可信的证书,并在远程桌面连接中让系统使用这个证书。
首先获得一个这样的证书并不难,只要你已经有至少一个可用的域名,那么StartSSL便可以免费为你提供;
然后导入这个证书也不难,只要参照配置https服务的方法,直接导入就行了;
那么问题在哪儿呢?那就是证书导进去了,系统却不使用。
这个问题在Server版当中据说有专门的工具解决,但桌面版却并没有,所以最后就只好修改注册表,将要用的证书的指纹填进去,告诉系统该用哪个证书,然后问题就解决了。

操作步骤
第一步 导入证书
已经用证书配置好https的可以跳过第一步。

我之前已经申请好证书了,在这里就不演示申请过程了,关于StartSSL免费证书的教程很多,可以自行百度之。

申请到证书后,在我们手中的应该是一个 *.p12 的证书文件, 放在一边备用。

如果手上只有 私钥 *.key 和 证书 *.crt ,请使用StartSSL的控制台工具:Tool Box -> Create PKCS#12 (PFX) File,按照表单提示,提供私钥和证书内容,并设定一个密码,然后选择继续来生成.p12文件,熟悉linux的也可以用openssl命令行大法搞定。

首先按下‘Win + R’,进入“运行”,键入“mmc”,打开“管理控制台”。

在 文件 中选择 添加/删除管理单元 。

在左侧选中 证书 后点击 添加 。

在弹出的对话框中选择 计算机账户,点击 下一步 。

之后选择 本地计算机(保持默认) 然后点击 完成 ,再然后点击 确定 。

在 证书-个人 上点击 右键 ,选择 所有任务-导入 。

按照向导点击 下一步 ,之后选择你的 证书文件 (p12格式的证书文件选择时需要更改文件类型才可以找到),之后需要输入之前设置的密码,证书存储 选择 根据证书类型,自动选择证书存储 ,然后点击下一步即可



导入完成后如下图所示:

第二步 分配权限
首先在已经导入的证书上点击 右键 ,选择 所有任务-管理私钥 。

之后添加 NETWORK SERVICE 用户。

至少要将 读取 权限分配给 NETWORK SERVICE ,然后确定。

第三步 编辑注册表
首先是按下‘Win + R’,进入“运行”,键入“regedit”,打开“管理控制台”。

展开路径 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp ,然后添加如下项:
名称: SSLCertificateSHA1Hash
类型: REG_BINARY

之后回到之前的证书管理,双击打开已经导入的证书,在 详细信息 中选择 指纹 ,并记录下方的值。

最后将记录的值填入之前新建注册表项的 数据 位置。

至此便大功告成!请尽情使用吧!

注意事项
这个方法以拥有域名为基础,这也是申请免费SSL证书的条件,没有特殊需要的话也很便宜。
证书设置完成后,访问远程桌面服务器就需要填写域名方式访问,而如果以局域网机器名访问的话,会提示名称不匹配。
实际上,SSL证书只是和FQDN (fully qualified domain name,全称域名)绑定对应的,所以IP是什么根本无所谓,通过本地host或者本地DNS解析的方式映射上域名理论上也都是可以的。
至此便大功告成!请尽情使用吧!

作者:李YD
来源:CSDN
原文:https://blog.csdn.net/a549569635/article/details/48831105
版权声明:本文为博主原创文章,转载请附上博文链接!

发表评论

电子邮件地址不会被公开。 必填项已用*标注