0x00 前言
通常新装的服务器都不会配有 RDP 加密证书, 我们连接的时候会看到一个证书错误警告. 大部分人都会直接忽略这个警告, 但在某种程度上这会造成一定的安全问题, 如受到 MITM 攻击等.
本文介绍了从准备证书到配置证书的全套流程, 有助于增强 RDP 连接的安全性.
0x01 准备证书
关于什么证书能用于 Windows RDP 连接, 在 Google 上我并没有找到相关资料. 在咨询了一些证书提供商客服后得到的回答是针对域名的加密证书可以用于 RDP 连接加密.
因此, 这里选择 Namecheap 提供的 PositiveSSL 单域名证书做演示. 下单流程非常简单, 在此不做赘述. 你当然可以使用自签证书, 但那就意味着要安装不安全的 CA, 反正我是不喜欢这么干的.
有时为了保证安全性, CA 会让你自己提供 CSR 并签发 CRT, 而在 Windows 下导入带私钥的证书时使用 PKCS12 (PFX) 格式会比较方便, 因此再用 openssl 合并一下. 输入 openssl pkcs12 -export -out <文件名>.pfx -inkey <文件名>.key -in <文件名>.crt
再设置一个临时密码即可
随后直接双击 PFX 打开证书导入向导, 选择 本地计算机 作为证书存储
随后证书存储选择个人, 跟随向导完成安装即可.
0x02 获取证书 Hash
辣你直接双击 CRT 不就有了嘛…
你说 CRT 被手滑删了? 好吧, 打开运行并输入 certlm.msc, 展开到 证书 – 本地计算机\个人\证书, 双击你刚才导入的证书也可以查看. 当然也可以用 openssl 导出证书信息.
0x03 配置 RDP 服务
大部分网络上的资料都需要安装一系列组件并通过 RD Gateway Management 来安装证书, 非常麻烦. 本文之所以在标题中写了 “简单” 就是因为不需要这么做.
根据 Listener Certificate Configurations in Windows Server 2012 中提供的资料, 证书 Hash 被存储在 WMI 的 Win32_TSGeneralSetting 类下, 路径为 Root\CimV2\TerminalServices\SSLCertificateSHA1Hash
打开命令提示符, 输入 wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="<刚才获得的Hash>"
即可.
最后重启 TermService, 测试连接即可. 注意连接的 Hostname 必须和证书中的一致.
此时连接应该不会提示证书警告, 并且能在全屏模式下看到连接栏中的小锁.