Windows 10/11 专业版和 Windows Server 的远程桌面(RDP)默认会使用系统自动生成的自签名证书。这个证书虽然可以加密连接,但客户端无法确认它来自受信任的证书颁发机构,所以连接时经常会看到“证书来自不信任的证书验证机构”之类的警告。
解决思路很简单:给这台 Windows 主机准备一张可信 SSL 证书,把证书导入到本地计算机证书存储区,然后把该证书绑定给 RDP 监听器使用。
适用场景
- Windows 10/11 专业版开启远程桌面;
- Windows Server 使用远程桌面管理;
- 已经拥有一个可用于该主机名或域名的 SSL 证书;
- 希望 RDP 连接时不再提示证书不受信任。
注意:证书的域名要和你连接 RDP 时使用的主机名匹配。比如你用
rdp.example.com连接远程桌面,那么证书也应该签发给rdp.example.com。
准备证书
RDP 最方便使用的是带私钥的 PFX/P12 证书文件。
如果你从云厂商申请证书,可以优先下载 Tomcat / IIS / PFX 这类格式,因为通常会直接包含证书和私钥。
如果你手里是 PEM 证书和 KEY 私钥,可以用 OpenSSL 转成 PFX:
1 | openssl pkcs12 -export \ |
执行时会要求设置一个导出密码。后面导入证书时会用到这个密码。
导入到本地计算机证书存储
在 Windows 上执行以下步骤:
- 按
Win + R打开“运行”; - 输入
mmc,打开“管理控制台”; - 点击顶部菜单:文件 → 添加/删除管理单元;
- 在左侧选择 证书,点击 添加;
- 选择 计算机账户,点击 下一步;
- 选择 本地计算机,点击 完成;
- 回到管理单元列表后点击 确定。
然后在左侧展开:
1 | 证书(本地计算机) → 个人 → 证书 |
右键 证书,选择:
1 | 所有任务 → 导入 |
按照向导选择前面准备好的 .pfx / .p12 文件,输入导出密码,并把证书导入到本地计算机的个人证书存储区。
导入完成后,应该可以在“个人 → 证书”里看到这张证书。
给 RDP 服务授予私钥读取权限
RDP 服务需要能读取证书私钥,否则即使证书导入成功,也可能无法正常绑定或使用。
在证书管理器中:
- 找到刚导入的证书;
- 右键证书,选择 所有任务 → 管理私钥;
- 添加用户:
NETWORK SERVICE; - 给
NETWORK SERVICE至少授予 读取 权限; - 保存退出。
如果系统是中文界面,用户选择框里可以直接输入:
1 | NETWORK SERVICE |
然后点“检查名称”。系统识别后再确认。
获取证书指纹
双击证书,进入证书详情:
1 | 详细信息 → 指纹 |
复制指纹内容。
复制出来的指纹通常带空格,建议先去掉空格,最终得到一串连续的 SHA1 指纹,例如:
1 | ABCD1234ABCD1234ABCD1234ABCD1234ABCD1234 |
如果复制后开头有隐藏字符,也要删掉。最稳妥的做法是粘贴到纯文本编辑器里检查一遍,只保留十六进制字符。
绑定证书到 RDP 监听器
以管理员身份打开 PowerShell,执行:
1 | $thumbprint = "替换为你的证书指纹" |
也可以使用传统 wmic 命令:
1 | wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="替换为你的证书指纹" |
新版 Windows 里
wmic已经逐步被弃用,如果可用,优先使用 PowerShell 的Set-WmiInstance。
重启远程桌面服务
绑定完成后,建议重启 Remote Desktop Services,让配置立即生效。
可以在管理员 PowerShell 中执行:
1 | Restart-Service TermService -Force |
注意:如果你当前就是通过 RDP 连进去的,重启该服务会短暂断开远程桌面连接。更稳妥的方式是在本机控制台或有备用连接方式时操作。
验证配置
重新用域名连接 RDP:
1 | rdp.example.com |
如果证书链完整、域名匹配、客户端信任该 CA,连接时就不应该再出现“不受信任的证书验证机构”警告。
也可以在 Windows 上查询当前 RDP 证书指纹:
1 | Get-WmiObject -Namespace "root\cimv2\TerminalServices" ` |
输出的 SSLCertificateSHA1Hash 应该和刚才绑定的证书指纹一致。
常见问题
证书导入了,但绑定后仍然报错
重点检查三件事:
- 证书是否包含私钥;
NETWORK SERVICE是否有私钥读取权限;- 指纹是否复制正确,尤其是空格和隐藏字符。
证书可信,但仍提示名称不匹配
这通常是连接 RDP 时使用的地址和证书域名不一致。
例如证书签发给:
1 | rdp.example.com |
但你连接时用了:
1 | 192.168.1.10 |
客户端就可能提示名称不匹配。解决办法是使用证书对应的域名连接,或者给证书添加正确的 SAN。
Let’s Encrypt 证书能不能用?
可以。只要证书链完整,并且能导出为带私钥的 PFX/P12 文件,就可以用于 RDP。
如果使用 Let’s Encrypt,需要注意证书有效期通常是 90 天,续期后还要同步更新 RDP 绑定。生产环境建议写自动化脚本处理续期、导入和绑定。
小结
RDP 证书配置的核心步骤是:
- 准备带私钥的 PFX/P12 证书;
- 导入到“本地计算机 → 个人 → 证书”;
- 给
NETWORK SERVICE授予私钥读取权限; - 获取证书 SHA1 指纹;
- 通过 WMI 把指纹写入 RDP 监听器;
- 重启远程桌面服务并验证。
配置完成后,RDP 连接体验会干净很多,也更适合长期暴露给固定管理入口使用。