你是否厌倦了每次连接Windows远程桌面时弹出的“无法验证远程计算机身份”的警告?这通常是因为远程桌面服务(RDP)使用了自签名或不被客户端信任的证书。本文将手把手教你如何为Windows自带的RDP服务配置一个受信任的SSL证书,从而一劳永逸地消除这个烦人的安全警告,让你的远程连接体验更流畅、更安全。
1. 准备域名及证书
首先,你需要为你的远程服务器配置一个可解析的域名。之后,为该域名申请一个SSL证书。你可以通过 Let‘s Encrypt 等免费CA(如使用acme.sh工具)获取,也可以使用OpenSSL生成自签名证书。无论哪种方式,最终你都会得到一个证书文件(通常是 .pem 或 .crt 格式)和一个私钥文件(.key 格式)。
接下来,我们需要将这对文件合并成Windows系统所需的PKCS12格式(.p12)证书。在拥有OpenSSL环境的命令行中执行以下命令:
openssl pkcs12 -export -clcerts -in [your_domain_crt.pem] -inkey [your_domain_key.key] -out [your_domain.p12]
执行命令时,你会被提示设置一个密码来保护 .p12 文件,请务必牢记此密码。
2. 导入证书到计算机存储
在需要被远程访问的Windows服务器或计算机上操作。按下 Win + R 键打开“运行”对话框,输入 certlm.msc 并回车,以打开“计算机证书管理器”。
- 在左侧控制台树中,依次展开“证书 - 本地计算机” -> “个人”。
- 右键单击“个人”,选择“所有任务” -> “导入...”。

- 在弹出的证书导入向导中,点击“下一步”,然后浏览并选择你刚才生成的
.p12 文件。
- 输入创建
.p12 文件时设置的密码。
- 在“证书存储”步骤,确保选择“将所有的证书都放入下列存储”,并且存储位置显示为“个人”,点击“下一步”完成导入。
3. 获取证书指纹(SHA1 Hash)
证书导入后,你可以在“个人 -> 证书”文件夹下看到它。双击打开此证书,切换到“详细信息”选项卡。
在属性列表中,找到并点击“指纹”字段。下方显示的十六进制字符串(如 54f00b20fa20182641cfc75f0f378060c0d0defc)就是该证书的SHA1哈希值,也就是我们需要的“指纹”。请完整复制它(不包括空格)。

4. 配置RDP服务使用指定证书
现在,我们需要告诉远程桌面服务使用我们刚刚导入的证书。以管理员身份打开命令提示符(CMD)或PowerShell,执行以下命令:
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="<刚才获得的Hash>"
请务必将 <刚才获得的Hash> 替换为你实际复制的指纹字符串,并保留双引号。例如:
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="54f00b20fa20182641cfc75f0f378060c0d0defc"

如果命令执行成功,你将看到“属性更新成功。”的提示。
5. 重启远程桌面服务并验证
最后一步,重启远程桌面服务以使配置生效。你可以在服务管理器中重启“Remote Desktop Services”,或者直接在管理员命令行中执行:
net stop TermService && net start TermService
完成以上所有步骤后,你的Windows RDP服务就已绑定了可信的SSL证书。现在,使用该证书对应的域名(而不是IP地址)进行远程桌面连接,那个令人不快的安全警告弹窗就应该消失了。

重要提示:如果你使用的是自签名证书,在客户机上首次通过域名连接时,可能仍需在客户端手动查看并信任该证书。但在此之后,或者使用受公共信任的CA颁发的证书,则不会再出现任何警告,实现无缝的安全连接。
希望这篇指南能帮助你优化远程桌面体验。如果在实践中遇到其他问题,欢迎到 云栈社区 的技术论坛与更多开发者交流探讨。