在 IIS 中实现 SSL 证书的自动续期
在 IIS 中实现 SSL 证书的自动续期最主流和推荐的方法是使用开源工具win-acme。它可以自动从 Lets Encrypt 申请免费证书并配置好自动续期任务。以下是使用win-acme实现 IIS SSL 证书自动续期的完整步骤️ 第一步下载并配置 win-acme访问win-acme的官方 GitHub 发布页面https://github.com/win-acme/win-acme。下载推荐的pluggable版本例如win-acme.v2.x.x.xxxx.x64.pluggable.zip这个版本自带运行时无需额外安装 .NET 环境。将下载的压缩包解压到服务器的一个固定目录例如C:\win-acme。pluggable 版本 (功能完整版)这是推荐的下载版本特别是对于初次使用者或需要更多功能的用户。功能完整包含了win-acme所有的验证插件如 DNS 验证、HTTP 验证、TLS 验证、存储插件如 IIS、PEM、PFX等。适用场景广支持所有类型的域名验证包括需要 DNS API 验证的通配符证书(*.example.com)。支持集成各种云服务如 Azure、AWS Route53、阿里云、腾讯云等 DNS 服务商的 API。可以将证书存储为 PEM、PFX 文件或存入 Windows 证书存储、IIS 中央存储等。文件体积大因为包含了所有组件所以压缩包和占用空间都更大。自带运行时通常pluggable版本会自带 .NET 运行时无需在服务器上额外安装开箱即用。trimmed 版本 (精简版)这个版本是为了追求极致小巧而设计的但牺牲了大部分高级功能。功能精简移除了绝大多数插件只保留了最核心的功能。适用场景单一主要用于最简单的 IIS 站点 SSL 证书申请和续期。通常只支持标准的http-01验证方式。不支持通配符证书、DNS API 验证等高级功能。文件体积小由于移除了大量组件压缩包和占用空间都非常小 第二步首次申请并部署证书以管理员身份运行解压目录下的wacs.exe程序。程序启动后在命令行菜单中选择N(Create certificate (default settings))使用默认设置创建证书。工具会自动扫描并列出 IIS 中的所有站点。选择你想要申请证书的站点编号。接着选择Single binding of an IIS site然后选择你要绑定的域名。阅读并同意 Lets Encrypt 的服务条款并按提示输入一个有效的邮箱地址用于接收证书到期等通知。选择验证方式通常选择http-01通过 80 端口验证域名所有权。选择安装方式为IIS工具会自动将证书绑定到 IIS 站点的 443 端口。完成以上步骤后win-acme会自动完成证书的申请、下载和在 IIS 中的部署。你可以回到 IIS 管理器中刷新站点确认 HTTPS 绑定已经生效。win-acme在尝试自动扫描 IIS 站点时没有发现任何配置了“主机名”Host Binding的网站。win-acme的Simple模式依赖于 IIS 中已有的绑定信息来推断你要为哪个域名申请证书。如果 IIS 里的网站绑定是空的或者只绑定了 IP 而没有填域名它就会报这个错。你需要确保在 IIS 中已经添加了一个网站并且该网站绑定了具体的域名。打开IIS 管理器(inetmgr)。在左侧连接面板中展开服务器节点点击“网站”。确保你有一个网站例如Default Web Site或你自己新建的站点。关键步骤右键点击该网站选择“编辑绑定...”。查看列表中的http或https条目错误情况如果“主机名”一栏是空的或者只有 IP 地址。正确情况必须在“主机名”栏填入你的域名例如www.example.com或example.com。如果没有请点击“添加”类型选http端口80在主机名处填入你的域名然后保存。修复后回到win-acme命令行重新运行wacs.exe它应该就能识别到网站了。Plugin IIS generated source vx.chxi.ltd with 1 identifiersPlugin Single created 1 order[vx.chxi.ltd] Authorizing...[vx.chxi.ltd] Authorizing using http-01 validation (SelfHosting)[vx.chxi.ltd] Authorization result: validDownloading certificate [IIS] Default Web Site, (any host)Store with CertificateStore...Installing certificate in the certificate storeAdding certificate [IIS] Default Web Site, (any host) 2026/4/12 in store WebHostingAdding certificate CNR12, OLets Encrypt, CUS in store CAInstalling with IIS...Adding new https binding *:443:vx.chxi.ltdCommitting 1 https binding changes to IIS while updating site 1Adding Task Scheduler entry with the following settings- Name win-acme renew (acme-v02.api.letsencrypt.org)- Path C:\Users\Administrator\Downloads- Command wacs.exe --renew --baseuri https://acme-v02.api.letsencrypt.org/- Start at 09:00:00- Random delay 04:00:00- Time limit 02:00:00Adding renewal for [IIS] Default Web Site, (any host)Next renewal due after 2026/6/6证书申请与验证阶段日志原文中文翻译与解释Plugin IIS generated source vx.chxi.ltd with 1 identifiers插件 IIS 生成了源域名vx.chxi.ltd包含 1 个标识符。工具从 IIS 中读取到了你要申请证书的域名。Plugin Single created 1 order插件 Single 创建了 1 个订单。向证书颁发机构发起申请请求。[vx.chxi.ltd] Authorizing...正在对vx.chxi.ltd进行授权验证...开始验证你是否拥有这个域名的控制权。[vx.chxi.ltd] Authorizing using http-01 validation (SelfHosting)正在使用 http-01 验证方式自托管进行授权。工具在本地 80 端口开启了一个临时服务等待 Lets Encrypt 的服务器来访问验证。[vx.chxi.ltd] Authorization result: valid授权结果有效。验证成功证明了你拥有该域名。安装与部署阶段日志原文中文翻译与解释Downloading certificate ...正在下载证书 [IIS] Default Web Site...从服务器获取证书文件。Store with CertificateStore...使用证书存储库进行存储...准备将证书存入 Windows 系统。Adding certificate ... in store WebHosting将证书添加到 WebHosting 存储区。证书已安全存入系统证书库。Adding certificate CNR12... in store CA将中间证书添加到 CA 存储区。自动下载并安装了 Lets Encrypt 的中间证书R12确保证书链完整。Installing with IIS...正在使用 IIS 进行安装...准备修改 IIS 配置。Adding new https binding *:443:vx.chxi.ltd**添加新的 HTTPS 绑定 *:443:vx.chxi.ltd。**自动在 IIS 中为你的站点开启了 443 端口并绑定了域名。Committing 1 https binding changes to IIS...提交 1 个 HTTPS 绑定更改到 IIS...保存了 IIS 的配置更改。自动续期配置阶段这是最关键的一步确保证书在 3 个月后Lets Encrypt 证书有效期能自动更新无需人工干预。日志原文中文翻译与解释Adding Task Scheduler entry...正在添加任务计划程序条目...正在创建 Windows 计划任务。- Name win-acme renew ...- 名称win-acme renew任务的名字。- Command wacs.exe --renew ...- 命令wacs.exe --renew ...设置的任务内容是自动运行续期命令。- Start at 09:00:00- 启动时间09:00:00每天早上 9 点检查一次。- Random delay 04:00:00- 随机延迟04:00:00为了避免服务器拥堵会在 09:00 到 13:00 之间随机找个时间执行。Adding renewal for ...为该站点添加了续期记录。Next renewal due after 2026/6/6下次续期检查时间在 2026年6月6日 之后。证书通常在过期前 30 天自动续期所以显示的时间比现在晚。整个过程非常顺利无需你进行任何操作。你的网站vx.chxi.ltd现在已经开启了 HTTPS并且系统会在后台自动维护证书的有效性。第三步设置自动续期任务win-acme在首次成功后通常会提示是否创建计划任务选择“是”即可。如果未自动创建可以手动配置以确保长期稳定运行创建批处理脚本在win-acme的安装目录如C:\win-acme下创建一个名为renew_cert.bat的文件chcp 65001 echo off REM REM 自动续签 win-acme HTTPS 证书脚本 REM REM 设置当前路径 (请根据实际安装路径修改) cd /d C:\win-acme REM 执行自动更新命令 wacs.exe --renew REM echo [%date% %time%] 证书自动更新任务已执行完毕。测试脚本在命令行中运行一次这个renew_cert.bat脚本确认它能成功执行没有报错。配置 Windows 任务计划程序按Win R键输入taskschd.msc并回车打开“任务计划程序”。在右侧操作栏点击“创建任务...”。常规名称例如Win-ACME Auto Renewal。勾选“不管用户是否登录都要运行”。勾选“使用最高权限运行”。触发器点击“新建...”设置一个触发频率。例如每天凌晨 2 点执行一次。win-acme自身会判断证书是否真的需要续期所以每天执行是安全的。操作点击“新建...”操作选择“启动程序”。在“程序或脚本”框中浏览并选择你刚才创建的renew_cert.bat文件。点击“确定”保存任务并根据提示输入管理员账户密码。完成以上配置后win-acme就会通过 Windows 计划任务定期检查并自动续期你的 SSL 证书实现真正的无人值守。