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

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

本文用于解决远程桌面连接中“无法验证此远程计算机的身份。”这一问题,具体症状如下图所示,强迫症福音!

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第1张图片

  • 本文主要介绍非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”,打开“管理控制台”。

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第2张图片

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

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第3张图片

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

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第4张图片

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

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第5张图片

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

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第6张图片

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

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第7张图片

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

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第8张图片
使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第9张图片
使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第10张图片

导入完成后如下图所示:

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第11张图片


第二步 分配权限

首先在已经导入的证书上点击 右键 ,选择 所有任务-管理私钥

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第12张图片

之后添加 NETWORK SERVICE 用户。

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第13张图片

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

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第14张图片


第三步 编辑注册表

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

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第15张图片

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

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第16张图片

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

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第17张图片

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

使用SSL证书为Windows(非Server)远程桌面RDP连接加密_第18张图片

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


注意事项

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


参考文章

《使用StartSSL的免费SSL证书为Windows远程桌面RDS服务指定受信任的证书》

你可能感兴趣的:(windows)