不想远程桌面被监听?远程桌面采用 SSL 证书加密至关重要,它能防止数据在传输中被窃听、篡改或伪造。其原理是通过 SSL 证书建立端到端加密通道,客户端与服务器握手时验证证书合法性,随后用会话密钥加密所有 RDP 流量,确保远程操作的账号、指令等敏感信息安全,尤其对跨网络远程访问而言,是抵御中间人攻击的核心保障。
一、制作自签名证书
制作自签名证书需要用到OpenSSL工具,下载后双击安装即可。软件如果没有自动添加环境变量,需要手动添加。
1、配置环境
1.打开环境变量设置窗口
按下 Win + R
,输入 sysdm.cpl
并回车,打开 “系统属性” 窗口。
切换到 高级 选项卡,点击右下角的 环境变量 按钮。
2.编辑系统变量中的 “Path”
在 “系统变量” 区域找到名为 Path
的变量,选中后点击 编辑。
在弹出的 “编辑环境变量” 窗口中,点击 新建,然后粘贴步骤 1 中找到的 OpenSSL 安装路径
(例如 C:\Program Files\OpenSSL-Win64\bin
)。
点击 确定 保存所有窗口(需依次关闭三个窗口)。
3.验证安装
重启 PowerShell(必须关闭当前窗口并重新打开,环境变量才能生效)。
在新的 PowerShell 窗口中输入以下命令:openssl version
如果输出 OpenSSL 的版本信息(如 OpenSSL 3.0.7 1 Nov 2022
),则表示环境变量配置成功。
2、制作证书
1.生成私钥(Private Key)
私钥是证书的核心,用于加密和解密数据。打开命令行工具(CMD/PowerShell/ 终端),执行以下命令:
openssl genrsa -out server.key 2048
2.生成证书签名请求(CSR)
CSR 包含证书的主体信息(如域名、组织等),用于申请证书(自签名时也需要此步骤)。执行命令:
openssl req -new -key server.key -out server.csr
执行后会提示输入一系列信息,按实际情况填写:
3.生成自签名证书(CRT)
使用私钥和 CSR 生成自签名证书,执行命令:
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
可以修改其中的days为你想要的证书持续时间,上边的是10年。
4.生成 PFX 格式证书
Windows 服务中需要 PFX 格式(包含私钥和证书的合并文件),执行命令:
openssl pkcs12 -export -inkey server.key -in server.crt -out server.pfx
执行时会提示设置密码(用于保护 PFX 文件),输入并确认即可生成server.pfx。
二、导入证书并配置权限
1、导入证书到服务端(被远程主机)
双击生成好的server.pfx证书文件,点击安装证书。在弹出的窗口中依次选择证书(本地计算机),然后输入刚刚设置的证书密码,再选择 (将所有证书放入下列存储)个人,即可完成证书导入。
2、配置访问证书权限
远程桌面服务(TermService)需要读取证书私钥的权限,否则会无法使用证书:
1.打开证书管理控制台
按下 Win + R,输入 mmc 并回车,打开 “控制台”。
点击菜单栏 文件 > 添加 / 删除管理单元,在左侧列表中找到 “证书”,点击 “添加”。
选择 “计算机账户” → “本地计算机”,点击 “完成” → “确定”。
2.配置访问证书权限
在 “个人> 证书” 中找到刚导入的证书,双击打开。
切换到 “详细信息” 选项卡,记下 “指纹”(一串哈希值,后续会用到)一定不要包含空格。
关闭证书窗口,右键该证书 → 所有任务 > 管理私钥。
点击 “添加”,输入 NETWORK SERVICE(远程桌面服务运行的账户),点击 “检查名称” 确认。
为NETWORK SERVICE赋予 “读取” 权限,点击 “确定” 保存。
三、为远程桌面和客户端配置证书
方法 1:PowerShell 命令(推荐)
以管理员身份打开 PowerShell。
运行以下命令(替换<证书指纹>为步骤 2 中记录的哈希值,不含空格):
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="<证书指纹>"
若提示 “属性更新成功”,表示配置生效。
方法 2:修改注册表
按下 Win + R,输入 regedit 并回车,打开注册表编辑器。
导航到路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
找到名为 SSLCertificateSHA1Hash
的注册表项(若没有则新建 “Binary” 类型)。
填入证书指纹,注意一定不要填错。
以管理员身份打开 PowerShell,重启远程桌面服务:net stop termservice && net start termservice
。
客户端证书配置
客户端安装证书:在客户端计算机上,将证书安装到本机的 “受信任的根证书颁发机构” 中,使客户端信任该证书,从而正常连接使用自签名证书的远程桌面。
四、验证是否成功
使用抓包工具(如 Wireshark)分析 RDP 连接的网络流量,确认是否使用 SSL/TLS 协议:
启动 Wireshark,选择 RDP 连接对应的网络适配器。
设置过滤条件:tcp.port == 3389(RDP 默认端口,如果自定义端口则需要调整)。
发起 RDP 连接,观察抓包结果:
若出现 TLSv1.2 或 TLSv1.3 相关握手包(如 Client Hello、Server Hello),说明使用 SSL/TLS 加密。
(如抓包发现ACK未使用TLSv加密,属正常现象,不影响传输安全。TLS 协议位于 TCP 协议之上,它主要对应用层数据加密,而 TCP 协议自身的一些控制信息,如 ACK(确认序号)等,并不在 TLS 加密范围内,会以明文形式传输。因此,抓包时能看到明文的 ACK 是符合协议规范的。)
评论