惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net
博客园_首页
J
Java Code Geeks
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
罗磊的独立博客
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
G
Google Developers Blog
博客园 - 司徒正美
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 叶小钗
M
MIT News - Artificial intelligence
Recent Announcements
Recent Announcements

Liups233の小站

玉龙雪山冰川公园游览记录 - Liups233の小站 YubiKey OpenPGP 智能卡使用指南 - Liups233の小站 通过 WKD / OPENPGPKEY DNS 记录部署 GPG 公钥 - Liups233の小站 OpenLiteSpeed 安装与建站配置 详细教程 - Liups233 使用 DNSCrypt-Proxy 为 Linux 配置加密 DNS - Liups233 WordPress 7.0 编辑器改回无衬线字体 - Liups233の小站 Redis 数据库权限与 Unix Socket 配置 - Liups233の小站 Cloudflare 设置 mTLS 验证来源拉取 - Liups233の小站 Docker 自建 RustDesk 远程和 API 服务 - Liups233の小站 ChatGPT Go 印度区免费试用白嫖 1 年 - Liups233の小站 使用 S/MIME 证书签名并加密电子邮件 - Liups233の小站 为 WordPress 外发邮件添加 S/MIME 签名 - Liups233の小站 网站域名变更迁移教程/记录 - Liups233の小站 将动漫视频刻录为视频光盘-蓝光/AVCHD DVD - Liups233の小站 百乐 CUSTOM 912 钢笔使用体验 - Liups233の小站 使用 Cloudflare mTLS 用户端凭证保护博客登入页面 - Liups233の小站 Kobo 手动安装 NickelMenu 和 KOReader - Liups233の小站 Kobo 阅读器字典缺字解决 - Liups233の小站 iCloud+ 域名邮箱的注册和使用 - Liups233の小站 9 美元一年的通配符 SSL 证书 - Liups233の小站 宝塔面板 Nginx 启用 Brotli 和 Pagespeed - Liups233の小站 拷贝 DVD/Blu-ray 光盘并使用 MeGUI 压制 - Liups233の小站 Spotify 相较 Apple Music 的优点 - Liups233の小站 欧卡/美卡自定义手排挡位布局 - Liups233の小站 内地居民到港开户汇丰和中银香港全过程 - Liups233の小站 给光驱刷入 LibreDrive 固件解锁区域和加密限制 - Liups233の小站 个人博客适用的 Cloudflare 防火墙和缓存规则 - Liups233の小站 为Kobo阅读器添加Google Drive和Dropbox功能 - Liups233の小站 百乐 PILOT Capless Fermo 钢笔评测 - Liups233の小站 业余无线电 B 类考试笔记 - Liups233の小站
Windows 远程桌面连接 SSL 证书与自动续期 - Liups233の小站
Liups233 · 2026-07-31 · via Liups233の小站

前言

Windows 远程连接时是不是一直弹出证书错误警告?这是因为远程连接服务端默认生成的是自签证书,默认是不受信的。所以我们需要像建网站配置 HTTPS 那样,为 Windows 远程桌面服务端配置一个有效的 SSL 证书。本教程会使用 Win-ACME,通过自动添加 Cloudflare DNS 记录来签发一个域名证书,并应用到远程桌面连接,同时自动续期。

目录

先决条件

  • 本教程只适用于 使用域名 连接到远程桌面的用户。对于家庭宽带,需要你已经配置好了 DDNS、端口映射等。
  • 本教程适用于域名托管到 Cloudflare 的人。对于其它 DNS 服务商,需要你自行研究 Win-ACME 的插件。

在 Cloudflare 创建 API Token

打开 Cloudflare 仪表板 并登入,点击右上角的人像图标,点击设定档,再点击左侧的 API 权杖,点击建立 Token。

Cloudflare 创建 API Token
Cloudflare 创建 API Token

在 API 权杖范本中,选择预设的「编辑区域 DNS」范本,然后修改以下 Token 名称,并在下面的区域资源中选择你的域名。其它如客户端 IP 和 Token 起止时间就看你需要,一般不填。

给 Win-ACME 建立 Token
给 Win-ACME 建立 Token

然后点击继续,建立 Token,之后复制你的 Token 即可。Token 只会显示一次,可以先粘贴在记事本里备用。

下载 Win-ACME 和插件

打开 Win-ACME 官网,点击菜单栏的 Download,然后下载带有「larger download, plugin support」的完整版本,不要下第一个 recommend 的版本,如图。然后你下载的压缩包的文件名应该是带有「pluggable」字样的。

下载完整带插件的 Win-ACME
下载完整带插件的 Win-ACME

然后将压缩包解压到一个固定目录,如 C:\Users\<用户名>\AppData\Local\Win-ACME,或者看你喜欢。

接下来还要下载用于 Win-ACME 的 Cloudflare DNS 插件,打开 项目的发布页,下载 plugin.validation.dns.cloudflare.<版本号>.zip(如果你使用其它 DNS 服务商,可以点击 Show all assets,然后看看有没有你用的)。之后将下载的 zip 里的 dll 文件解压到相同目录下,和 wacs.exe 处于同层目录,如图(我文件夹里的内容应该比你的多一些,因为我已经运行过一次了):

将插件文件解压到相同目录
将插件文件解压到相同目录

接下来需要编辑 settings_default.json,在约 84 行找到 "DnsServers": [ "[System]" ],,表示程序检验 DNS 记录是否添加成功所使用的 DNS。由于系统默认用的 DNS 可能有点问题,这里我们就手动指定 DNS,将这一行改成下面这样(注意有缩进):

"DnsServers": [ "119.29.29.29", "223.5.5.5", "1.0.0.1" ],
win acme edit dns
修改 DNS 设定

同时,为了让 Win-ACME 能在续期完成后,自动将更新的 SSL 证书套用到远程桌面连接上,还需要写一个 Script,用于自动接收新证书的 SHA-1 指纹,并应用于远程连接。在当前目录,新建一个 bind-rdp.bat 文件,写入以下内容并保存:

@echo off
wmic /namespace:\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="%1"

命令里的 %1 表示接收第一个参数,稍后我们签发证书时会将发送给脚本的第一个参数设置为 SHA-1 指纹。

签发证书

然后 Win + X,选择 Windows PowerShell(系统管理员),然后 cd 进 Win-ACME 的目录,然后执行以下命令,<> 根据实际需要替换:

.\wacs.exe --source manual --host <域名> --friendlyname "<名称>" `
  --validation cloudflare `
  --cloudflareapitoken "<Cloudflare API Token>" `
  --csr ec `
  --store certificatestore `
  --certificatestore My `
  --acl-fullcontrol "NETWORK SERVICE,Administrators" `
  --installation script `
  --script "C:\Users\<用户名>\AppData\Local\Win-ACME\bind-rdp.bat" `
  --scriptparameters "{CertThumbprint}" `
  --setuptaskscheduler `
  --accepttos --emailaddress "<邮箱>"

命令说明:

  • --source manual:手动指定域名
  • --host <域名>:需要签发的域名,以逗号分隔
  • --friendlyname "<名称>":设置一个名称,便于区分。可随意命名,例如 [Win-RDP] + 域名
  • --validation cloudflare:使用 Cloudflare 自动 DNS 记录验证
  • --cloudflareapitoken "<Token>":你的 API Token
  • --csr ec:使用椭圆曲线密钥
  • --store certificatestore:存储在 Windows 证书存储区中
  • --certificatestore My:存储在 Windows 证书存储区中的「个人」目录(运行 certlm.msc 可以看到)
  • --acl-fullcontrol "NETWORK SERVICE,Administrator":允许这些用户使用密钥(远程链接服务使用 NETWORK SERVICE 用户)
  • --installation script:在一次成功签发/续期后,运行脚本
  • --script "<位置>":脚本的位置
  • --scriptparameters "{CertThumbprint}":给脚本传入证书 SHA-1 指纹作为参数
  • --setuptaskscheduler:设定一个自动续期计划程序
  • --accepttos:接受 Let's Encrypt 许可协议
  • --emailaddress "<邮箱>":填入邮箱用来接收通知,例如证书出问题等等(一般不会发)

回车后,稍作等待,出现成功提示即可,如图:

Win-ACME 成功创建远程桌面连接证书
Win-ACME 成功创建证书

这样就行了,现在尝试远程连接,应该就不会报证书错误了,点左上角的锁图标也可以看到证书信息。另外,程序也设定了一个计划任务,每天会检查证书有效期,如果快到期了会自动续签。续签之后也会触发 Script,将新证书自动绑定在远程桌面连接上。

Windows 远程连接证书有效
远程连接证书有效

其它

其实大概半年前就像写这个教程了,但后面换成了 Linux(Kubuntu 26.04)作为主系统,教程就搁置了。现在又换回 Windows 了,遂补全😇。还是妥协了,太多软件/游戏不能在 Linux 下面完美运行,加上又购买了 Microsoft 365 Business 订阅,最终还是回到了 Windows(10 IoT LTSC)。

更多教程欢迎回到 主页 阅读,也欢迎留言喵。

参考资料