前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为 Windows RDP 配置 TLS, Windows Remote Desktop Enable TLS

为 Windows RDP 配置 TLS, Windows Remote Desktop Enable TLS

作者头像
阿龙w
发布2023-12-30 08:11:14
1.8K0
发布2023-12-30 08:11:14
举报
文章被收录于专栏:阿龙的笔记阿龙的笔记

之前写了一篇关于如何配置 Windows RDP 加密证书的教程(https://www.alongw.cn/archives/926),但是显然这篇教程的内容有一些的过时以及差劲

看了网上很多教程,一直没什么好的,都是大概随便讲讲,也不讲细,中间也会有一些小问题,基本上都是看着别人教程操作一遍,自己就照着写一个了,都大同小异,故作此文

这或许是互联网上最详细的中文教程

我们为什么要配置 TLS 证书

首先,我们需要知道,传输层安全性协议 (Transport Layer Security) 前身称为安全套接层(就是我们常说的 SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。 网景公司在1994年推出首版网页浏览器-网景导航者时,推出 HTTPS 协议,以 SSL 进行加密,这是 SSL 的起源。 IETF 将 SSL 进行标准化,1999 年公布 TLS 1.0 标准文件。维基百科

说人话,TLS(Transport Layer Security)是一种加密通信协议,用于提高远程桌面连接的安全性。通过加密连接,TLS 确保在数据传输过程中敏感信息得到充分保护,同时防止中间人攻击,这样就可以确保连接的完整性和真实性

因此,这些安全性措施对于确保远程桌面连接的安全至关重要,毕竟你也不希望自己在观看高级内部机密文件的时候,遭遇意想不到的事情

Windows 会自带一个自签证书,这个证书是不被认可的(就相当于没有),下图提示就是证书无效时的明显表现之一

申请 TLS 证书

使用 acme.sh 申请 SSL 证书 这篇文章中,已经详细的介绍了 acme.sh 工具的使用,使用他可以方便的生成和自动续订 TLS 证书,本文就不过多赘述

当然,也可以使用各大国内平台的免费证书小白式申请(比如:腾讯云阿里云

转换 TLS 证书

如果申请证书的渠道提供下载 pfx 格式证书功能的话,就不需要此操作

由于 Windows 需要 pkcs12 (即 pfx)格式的证书,因此可以使用 acme.sh 自带的转换功能进行转换

代码语言:javascript
复制
acme.sh  --toPkcs  -d <domain>  [--password pfx-password]

不传入密码则会在后续通过对话的形式询问

如果没有 acme.sh 也可以使用 openssl 或者在线网站来进行转换

代码语言:javascript
复制
openssl pkcs12 -export -in <cer file> -inkey <key file> -out <out file>

同样,会使用对话的形式询问证书的密码

Q:为什么要设置密码?而其他格式又不需要?

A: 因为 pkcs12 格式的证书不仅包含公钥,且包含私钥,因此为了确保安全,需且必须要设置密码

导入 TLS 证书

进入需要安装证书的目标机器,打开微软控制台(即运行 mmc 命令)

进入控制台,按照实际情况配置控制台,如果仅是为了实现本文目的,则可按照下文操作。如果配置了远程控制台或其他形式的控制台,则可使用已经配置好的控制台操作。

点击菜单栏中的 “文件” — “添加/删除管理单元”

在弹出的穿梭框中,将 “证书” 管理单元从 “可用的管理单元” 添加到 “所选管理单元”

按照实际情况配置控制台,本文将配置 该管理单元始终为下列账户管理证书计算机账户

按照实际情况配置管理访问,本文将配置 这个管理单元将始终管理 配置为 本地计算机

完成后确认添加

添加完成后,依次展开 “证书” — “个人” ,随后右键 个人 或右侧空白位置,在打开的上下文菜单(即右键菜单)中依次选择 “所有任务” — “导入”

也可以直接双击打开资源管理器上的证书文件,快速打开导入向导

在弹出的证书导入向导中,选择 浏览

在选择文件的窗口中,将右下角的文件类型切换为 个人信息交换 ,然后选择打开需要导入的证书文件

打开后,在证书导入向导中键入导出时设置的密码,随后点击下一步

在证书导入向导中,将证书的存储位置设置为个人,如图所示

完成导入

顺带说一下,如果使用的是自签名证书,则在 RDP 的服务端和客户端都按照同样步骤安装证书既可

配置 TLS 证书的权限

这一步不是必须的,通常会自动设置,当然你可以检查一下

右键刚刚导入的证书,在弹出的上下文菜单中依次选择 “所有任务” — “管理私钥”

检查用户 “NETWORK SERRVICE” 是否有读取权限

如果没有,则手动配置一下,具体操作如下,这里就简要概括一下

获取 TLS 证书的指纹

查看证书的信息,在 “详细信息” 选项卡中选择指纹既可查看,如下图箭头的位置

应用 TLS 证书

应用证书的方法有很多,这边列举三种方法,任选一种方法既可

方法一:使用 WMIC 命令

(不能用的先往下看)

WMIC 是 Windows 管理规范的拓展

用管理员身份运行命令提示符(CMD)或 PowerShell

右键 Windows 微标键,选择 Windows PowerShell (管理员)

执行以下命令既可

代码语言:javascript
复制
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="前面获取的 TLS 证书指纹"

方法二:使用 PowerShell

“WMIC 已在 Windows 10 版本 21H1 和 Windows Server General Availability Channel 的 21H1 版本中弃用。该工具已被用于 WMI 的 Windows PowerShell 取代 Microsoft 微软

微软曾宣布,WMIC 已开始在 Windows Server 中弃用 wmic.exe,转而支持 Windows PowerShell,其中还包括查询 Windows Management Instrumentation 的能力,因此,如果你使用不了上面的方法,则可以使用此方法

右键 Windows 微标键,选择 Windows PowerShell (管理员),注意不能用命令提示符,必须用 PowerShell

执行下面命令

代码语言:javascript
复制
(Get-WmiObject -Namespace root\cimv2\TerminalServices -Class Win32_TSGeneralSetting -Filter 'TerminalName="RDP-Tcp"').SSLCertificateSHA1Hash = "前面获取的 TLS 证书指纹"

方法三:手动修改注册表

启动注册表编辑器,可以直接在开始菜单搜索,也可以运行 regedit 命令

依次打开 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp ,如果路径不存在,则新建

打开后新建一个名为 SSLCertificateSHA1Hash 的二进制值

在弹出的编辑二进制数值窗口中,把刚才获取到的 TLS 证书指纹填入 数值数据

配置 TLS 版本

这一步是可选的,但是为了安全,仍然建议配置

TLS 1.0 与 TLS 1.1 已经是不安全的协议,因此在任何场景我们都尽量不要使用他们

具体原因可参考

https://learn.microsoft.com/zh-cn/lifecycle/announcements/transport-layer-security-1x-disablement

https://www.trustasia.com/view-security-tls-browser/

各系统版本对 TLS 各个版本的支持情况(来自 https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl–schannel-ssp-

Windows OS

TLS 1.0 Client

TLS 1.0 Server

TLS 1.1 Client

TLS 1.1 Server

TLS 1.2 Client

TLS 1.2 Server

TLS 1.3 Client

TLS 1.3 Server

Windows Vista/Windows Server 2008

Enabled

Enabled

Not supported

Not supported

Not supported

Not supported

Not supported

Not supported

Windows Server 2008 with Service Pack 2 (SP2)

Enabled

Enabled

Disabled

Disabled

Disabled

Disabled

Not supported

Not supported

Windows 7/Windows Server 2008 R2

Enabled

Enabled

Disabled

Disabled

Disabled

Disabled

Not supported

Not supported

Windows 8/Windows Server 2012

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 8.1/Windows Server 2012 R2

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 10, version 1507

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 10, version 1511

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 10, version 1607/Windows Server 2016 Standard

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 10, version 1703

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 10, version 1709

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 10, version 1803

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 10, version 1809//Windows Server 2019

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 10, version 1903

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 10, version 1909

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 10, version 2004

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not supported

Not supported

Windows 10, version 20H2

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not Supported

Not Supported

Windows 10, version 21H1

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not Supported

Not Supported

Windows 10, version 21H2

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not Supported

Not Supported

Windows 10, version 22H1

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not Supported

Not Supported

Windows 10, version 22H2

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Not Supported

Not Supported

Windows Server 2022

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Windows 11

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

Enabled

按照表中的信息,截至当前仅有 Windows 11 和 Windows Server 2022 支持 TLS 1.3 ,关于未来的版本请参考来源链接中的信息。如果你在连接时提示 “出现了内部错误” ,可能就是因此而造成的(我曾遇到一个问题,参见 https://learn.microsoft.com/en-us/answers/questions/1276049/when-i-use-the-remote-desktop-software-from-the-mi 可见每次微软官方都没有解决我的问题,都是在后续中自行发现的)

使用注册表编辑器打开 HKEY_LOCAL_MACHINE\SYSTEM\CurrentcontrolSet\Control\SecurityProviders\SCHANNEL\Protocols (没有则新建)

Protocols 项中,可以新建如 TLS 1.0TLS 1.1TLS 1.3 这样的项

在新建出来的 TLS X.X 项中,再次新建 Server

鼠标右键点击 Server 项,在打开的上下文菜单中依次选择 “新建” — “DWORD (32位)值”,重命名改值为 Enabled,双击 Enabled,在弹出的编辑 DWORD(32位)值窗口中,数值数据 键入 010 为禁用,1 为启用),点击确定既可

我这边将 TLS 1.3 设置为启用,TLS 1.0TLS 1.1 设置为禁用,效果如图

当然,顺带提一下,这一项也适用于客户端,像 Server 项那样配置 Client 项既可,我这边配置客户端启用 TLS 1.3 ,如图

尾声

在进行完所有配置之后,需要重启相关服务才能生效,不过我这边建议直接重启计算机

重启后测试连接,在全屏的浮动菜单栏中,会出现安全信息的选项(即小锁图标),且连接时不再会出现警告

提高远程连接的安全层和加密等级、配置 TLS 证书、禁用 TLS 1.0 等,这些配置的确能够提高远程桌面连接 RDP 的安全性。但实际上,RDP 的最大威胁还是漏洞以及微软那坨屎,2019 年就曾经出现了最严重的漏洞 “BlueKeep”(官方分类为 CVE-2019-0708),如果攻击者向特定端口(通常为 3389)发送经特殊设计的请求,则攻击者可以在计算机上执行所需的任何代码。(来自 https://vickey.fun/2022/08/27/Make-Remote-Desktop-Connection-More-Secure

Cloudflare 关于 RDP 漏洞的解释:https://www.cloudflare.com/zh-cn/learning/access-management/rdp-security-risks/

参考文献

https://vickey.fun/2022/08/27/Make-Remote-Desktop-Connection-More-Secure

https://blog.csdn.net/weixin_39568073/article/details/122068740

https://docs.oracle.com/cd/E35310_01/E40129/html/Windows-Network-Security.html

https://www.cloudflare.com/zh-cn/learning/access-management/rdp-security-risks/

https://techcommunity.microsoft.com/t5/ask-the-performance-team/listener-certificate-configurations-in-windows-server-2012-2012/ba-p/375467

https://c.m.163.com/news/a/H7Q87R280552ED9Y.html

https://www.trustasia.com/view-security-tls-browser/

https://learn.microsoft.com/en-us/answers/questions/514240/use-tls-1-3-for-rdp-(windows-server-2022)(https://learn.microsoft.com/en-us/answers/questions/514240/use-tls-1-3-for-rdp-(windows-server-2022%29)

https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl–schannel-ssp-

https://learn.microsoft.com/en-us/answers/questions/1339553/configure-tls-1-3-for-use-rdp-windows-server-2022

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们为什么要配置 TLS 证书
  • 申请 TLS 证书
  • 转换 TLS 证书
  • 导入 TLS 证书
  • 配置 TLS 证书的权限
  • 获取 TLS 证书的指纹
  • 应用 TLS 证书
    • 方法一:使用 WMIC 命令
      • 方法二:使用 PowerShell
        • 方法三:手动修改注册表
        • 配置 TLS 版本
        • 尾声
        • 参考文献
        相关产品与服务
        SymantecSSL 证书
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档