路线 F · Windows IIS
路线 F:Windows IIS + win-acme 教程
网站放在 Windows Server、用 IIS 搭建的,照这一页做:全程点鼠标加一次下载,10~30 分钟让地址栏告别「不安全」,并且以后自动续期。
本文目录 · 13 节
先说结论
- IIS 上装证书用 win-acme:免费开源,自动申请 Let's Encrypt、自动绑定 IIS 的 443、自动建计划任务续期,全程问答式点鼠标。
- 动手前先过 7 项预检:网站能 http 打开、IIS 绑定写了主机名、云安全组与 Windows 防火墙都放行 80/443、域名解析正确。80 端口不通是失败第一原因。
- win-acme 只发证书不负责跳转:http 到 https 的 301 跳转要装 URL Rewrite 模块再加规则,或交给 Cloudflare 的「始终使用 HTTPS」。
- Let's Encrypt 已于 2025-06-04 停止发送到期提醒邮件,证书有效期还会从 90 天缩到 64、45 天:必须靠计划任务自动续期,再加一个外部到期监控。
🤖 把这篇交给你的 AI 智能体
复制后粘贴给你常用的 AI 智能体(豆包、ChatGPT、Claude、Codex 等),它会按同样的步骤带你做完,并在每一步改动前先征求你的同意。不要把密码、密钥发到对话里。
查看将要复制的提示词
这条路适合谁
| 你的情况 | 能不能走这条路 |
|---|---|
| 网站放在 Windows Server 上,用 IIS 搭建 | ✅ 就是这条路 |
| 你能用「远程桌面(RDP)」以管理员身份登录这台服务器 | ✅ 就是这条路 |
| 服务器是 Windows,但网站其实是宝塔 Windows 版 / 其他面板管的 | ⚠️ 先看面板里有没有 SSL 入口,没有再用本办法 |
| 网站放在阿里云/腾讯云的 Windows 云服务器 | ✅ 同样适用(注意云安全组) |
| 网站是 Linux 服务器(Nginx / Apache) | ❌ 走〔路线 A:Linux + Certbot,规划中〕 |
| 网站建在 Shopify / Wix / WordPress.com 等平台 | ❌ 走路线 E:SaaS 建站平台 |
用时:熟练的人 10 分钟,第一次做留出 30 分钟。难度:★★(全程点鼠标 + 一个下载,不用敲命令)。
这条路的核心:用 win-acme 这个免费开源工具,自动向 Let's Encrypt 申请证书、自动绑定到 IIS、自动创建「计划任务」续期。证书本身免费,不要为「装证书」另外付钱。

六步总览(先看结论)
| 步骤 | 做什么 | 成功标志 |
|---|---|---|
| 1 · 准备 | IIS 网站能用 http:// 打开、绑定写了主机名、80/443 放行 | 浏览器能打开 http://你的域名 |
| 2 · 下载 | 下载 win-acme 的 x64 trimmed 版,解压到固定文件夹 | C:\Program Files\win-acme\wacs.exe 存在 |
| 3 · 运行 | 右键「以管理员身份运行」wacs.exe | 出现蓝色文字主菜单 |
| 4 · 申请 | 输入 N → Read bindings from IIS → 选站点 | 显示证书申请成功、绑定已更新 |
| 5 · 验证 | 浏览器访问 https://你的域名 | 地址栏显示安全、证书有效 |
| 6 · 收尾 | 开 HTTP→HTTPS 跳转、确认续期计划 | http:// 自动跳到 https://,续期计划可见 |
8.1 准备(打勾再动手)
这一步全是「只看不改」,放心做。任何一项不合格,先去修,否则第 4 步一定会失败。
| # | 检查项 | 怎么查 | 合格标准 | 不合格怎么办 |
|---|---|---|---|---|
| 1 | 网站本身能用 http 打开 | 服务器上打开浏览器,访问 http://你的域名 | 能正常显示网页 | 先把 IIS 站点配好,能访问再谈证书 |
| 2 | IIS 绑定里有主机名 | IIS 管理器 → 你的站点 → 右侧「绑定」 | 至少有一条 http / 80 / 你的域名(根域名和 www 各一条最稳) | 点「添加」补上主机名;主机名留空会导致 win-acme 读不到域名 |
| 3 | Windows 防火墙放行 80、443 | 「高级安全 Windows Defender 防火墙」→ 入站规则 | 有允许 TCP 80、443 的规则 | 新建入站规则放行 TCP 80、443 |
| 4 | 云安全组放行 80、443 | 云厂商控制台 → 安全组 | 入方向允许 TCP 80、443 | 加一条入方向规则;这是最常被漏掉的一步 |
| 5 | 域名解析指向这台服务器 | 浏览器打开 https://dns.google/resolve?name=你的域名&type=A | 返回的 IP 就是这台服务器的公网 IP | 到域名注册商改 A 记录,等生效(几分钟到几小时) |
| 6 | 能改 DNS 的 CAA 记录 | nslookup -type=CAA 你的域名 | 没有 CAA 记录,或包含 letsencrypt.org | 删掉禁止 Let's Encrypt 的 CAA 记录 |
| 7 | 你有管理员权限 | 远程桌面登录时用的是管理员账号 | 能打开 IIS 管理器 | 找服务商/建站公司要管理员权限,别在聊天里发密码 |
8.1.1 怎么加、怎么检查 IIS 绑定
绑定(Bindings)是这一章的关键:它告诉 IIS「哪个域名、哪个端口、交给哪个网站」。win-acme 的「Read bindings from IIS」就是靠它读域名的,所以绑定里必须写主机名。
- 1. 打开 IIS 管理器(开始菜单搜
inetmgr,或「服务器管理器 → 工具 → Internet Information Services (IIS) 管理器」)。 - 2. 左侧展开服务器名 → 网站(Sites),点你的站点。
- 3. 右侧「操作」面板点绑定(Bindings),会列出这个站点所有绑定。
- 4. 检查有没有这样两条(有就跳过,没有就点「添加」补):
- 类型
http、端口80、主机名你的域名 - 类型
http、端口80、主机名www.你的域名
- 5. 添加时:类型选
http,IP 地址选「全部未分配」,端口填80,「主机名」填你的域名(不要留空),确定。 - 6. 回到浏览器访问
http://你的域名,能打开说明绑定生效。
8.1.2 两道门都要放行(云安全组 + Windows 防火墙)
服务器的端口有两道门:云厂商控制台里的「安全组」(像小区大门),和 Windows 系统里的「防火墙」(像家门)。两道都要放行 TCP 80 和 443,缺一道申请就会失败。
第一道门:云安全组。 登录云厂商控制台(阿里云、腾讯云等)→ 找到这台服务器的安全组 → 入方向规则 → 添加 TCP 80 和 TCP 443。

第二道门:Windows 防火墙。 图形界面:「高级安全 Windows Defender 防火墙」→ 入站规则 → 新建规则 → 端口 → TCP → 特定本地端口 80,443 → 允许连接。也可以在以管理员身份运行的 PowerShell 里一条命令搞定:
New-NetFirewallRule -DisplayName "HTTP 80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS 443" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
逐行解释:第一条放行入方向 TCP 80;第二条放行入方向 TCP 443。跑完后用 Get-NetFirewallRule -DisplayName "HTTP 80" 能看到刚建的规则。
验证端口从外网能通(在你自己电脑上,不是在服务器上):
Test-NetConnection 你的域名 -Port 80
看 TcpTestSucceeded 是不是 True;不是的话,回去检查上面两道门和域名解析。
8.2 下载与运行 win-acme
- 1. 在服务器上用浏览器打开 win-acme 官网
https://www.win-acme.com,点 Download。 - 2. 下载文件名形如
win-acme.v2.x.x.xxxx.x64.trimmed.zip的版本(官方推荐大多数用户使用 x64 trimmed 版;trimmed表示去掉了用不到的文件,功能不受影响)。 - 3. 解压到一个固定不动的文件夹,官方建议
C:\Program Files\win-acme。不要放在桌面或「下载」文件夹——以后计划任务续期时可能找不到程序,续期就会静默失败。 - 4. 进入该文件夹,右键
wacs.exe→ 以管理员身份运行。不是管理员运行会读不到 IIS 绑定、也写不进证书存储。
8.3 按菜单操作(全程问答式)

- 1. 主菜单出现后,输入 N(
Create certificate (default settings),用默认设置创建证书),回车。 - 2. 选择 Read bindings from IIS(从 IIS 读取绑定)——win-acme 会自动列出 IIS 里所有带主机名的网站。
- 3. 按提示选择你的网站、选择要包含的域名(一般根域名和 www 全选)、再选一个主域名(primary host)。
- 4. 第一次使用会让你输入邮箱(用于紧急通知)并同意 Let's Encrypt 服务条款(输入
y)。 - 5. win-acme 自动完成:HTTP 验证 → 下载证书 → 存入 Windows 证书存储 → 自动添加/更新 IIS 的 https(443)绑定。
- 6. 最后它会创建一个 Windows 计划任务,每天检查一次,快到期时自动续期并重新绑定。
菜单里几个选项的意思(不选错就行):
| 菜单项 | 含义 | 你要选哪个 |
|---|---|---|
| N · Create certificate (default settings) | 用默认设置新建证书(推荐) | ✅ 第一次就选它 |
| M · Create certificate (full options) | 高级模式,参数更多 | 一般不需要 |
| R · Renew certificate | 手动立即续期一次 | 需要时用 |
| A · Manage renewals | 查看/管理已有的续期计划 | 第 6 步验证时用 |
| Read bindings from IIS | 从 IIS 自动读域名(省得手打) | ✅ 选它 |
| Manual input | 手动输入域名 | 绑定里没有主机名时才用 |
8.4 验证(四件事都做)
- 1. 浏览器访问
https://你的域名,点地址栏左侧图标 → 能看到「连接是安全的」「证书有效」。电脑和手机各试一次。 - 2. 四种网址都试:
https://你的域名、https://www.你的域名、http://你的域名、http://www.你的域名。前两个应正常,后两个应自动跳到 https(跳转在第 8.5 步配置)。 - 3. 再看续期计划:再次运行
wacs.exe,选 A: Manage renewals,能看到刚才创建的续期计划(含到期日)。 - 4. 确认计划任务:打开「任务计划程序(Task Scheduler)」,在任务库中能看到 win-acme 创建的任务。
用 PowerShell 快速看响应头(可选):
curl.exe -I http://你的域名
curl.exe -I https://你的域名
第 1 条应返回 301 并带 Location: https://...(配好跳转后);第 2 条应返回 200,且能看到证书信息。
8.5 开启 HTTP → HTTPS 跳转
win-acme 只管「发证书 + 绑定」,不负责把 http 跳转到 https。IIS 要做跳转,需要「URL 重写(URL Rewrite)」模块(来源:Microsoft Learn,2026-10 核对)。
- 1. 到
https://www.iis.net/downloads/microsoft/url-rewrite下载并安装 URL Rewrite 模块(服务器上装一次即可)。 - 2. 打开 IIS 管理器 → 你的站点 → URL 重写 → 右侧「添加规则」→ 选「空白规则」,或直接编辑站点的
web.config。 - 3. 把下面这段放进站点根目录的
web.config(若已有web.config,只把<rewrite>那一段合并进去):
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
逐段解释:match url="(.*)" 匹配所有路径;条件 {HTTPS} 为 OFF(也就是走的 http)时才触发;动作用 301 永久跳转 到同一域名的 https 版本({HTTP_HOST} 是访客访问的域名,{R:1} 是原路径)。
8.6 确认自动续期真的有效
| 检查点 | 怎么看 | 正常的样子 |
|---|---|---|
| 续期计划存在 | wacs.exe → A: Manage renewals | 列出你的证书和到期日 |
| 计划任务存在 | 「任务计划程序」→ 任务计划程序库 | 有 win-acme 的任务,触发器是每天 |
| 到期日正常 | 浏览器点锁头 → 证书 → 有效期 | 到期日距今约 90 天(Let's Encrypt 当前有效期) |
8.7 通配符证书与 DNS 验证(子域名很多时用)
如果这台服务器上有很多子域名(shop.、m.、blog.……),与其每个都单独申请,不如申请一张 *.你的域名 的通配符证书,一张覆盖所有一级子域名。
关键限制:通配符证书只能用 DNS 验证(证明你能修改域名的 DNS 记录),不能用 HTTP 验证。原因是 Let's Encrypt 要先确认你对整个域名有控制权,而不是只有某个子目录的访问权。

在 win-acme 里走 DNS 验证的要点:
- 1. 运行
wacs.exe,主菜单选 M(Create certificate,full options)或按向导选到「Manual input」,手动输入*.你的域名和你的域名。 - 2. 到验证方式那一步,选 DNS 验证(不是默认的 http 文件验证)。
- 3. win-acme 会给你一条 TXT 记录(名字形如
_acme-challenge.你的域名,值是它生成的一串字符)。你要在域名 DNS 管理后台手动添加这条 TXT 记录。 - 4. 加完等 DNS 生效(几分钟),回 win-acme 回车继续,它会自己去查这条 TXT 记录,查到就签发。
8.8 用 PowerShell 核对证书和绑定
不想每次都开浏览器看,可以用两条命令快速核对(以管理员身份运行 PowerShell):
Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*你的域名*" } | Format-List Subject, NotAfter, Issuer
逐行解释:在「本地计算机 → 个人」证书存储里,找出主题里包含你域名的证书,显示颁发对象、到期日、颁发者。能列出来说明证书已装进 Windows。
Import-Module WebAdministration; Get-WebBinding -Name "你的站点名" | Select-Object protocol, bindingInformation
逐行解释:列出该 IIS 站点的所有绑定,protocol 是 http 还是 https,bindingInformation 里能看到端口和主机名。配好证书后,这里应该多出一条 https、端口 443、主机名为你域名的绑定。
常见失败与排查
| 症状 | 最可能的原因 | 解决办法 |
|---|---|---|
| 主菜单里 Read bindings from IIS 列表是空的 | IIS 绑定里没写主机名(Host name 为空) | 到 IIS 绑定里给 80 端口那条补上「主机名」,或改用 Manual input 手打域名 |
| 验证失败:连接超时 / connection refused | 80 端口被防火墙或云安全组挡住,或被别的程序占用 | 两道门(云安全组 + Windows 防火墙)都放行 TCP 80;确认没有别的软件抢 80 端口 |
| 验证失败:域名解析不到 | A 记录没指向这台服务器,或 DNS 还没生效 | 用 dns.google 查 A 记录,等生效后重试 |
| 验证失败:返回了别的页面 / 404 | 有旧的重定向规则、CDN 或反向代理把验证文件拦掉了 | 临时关掉 301 跳转和 CDN,或改用 DNS 验证 |
| 装完仍提示「不安全」 | 页面里还混着 http:// 的图片/脚本(混合内容) | 按 F12 → Console 搜 Mixed Content 逐个改成 https |
访问 http:// 时无限重定向 | Cloudflare Flexible 模式 + 源站强制 https 两头跳转 | Cloudflare 改 Full (strict),或只让一头做跳转 |
| 续期失败、证书过期 | win-acme 文件夹被移动/删除,计划任务找不到程序 | 把 win-acme 放回固定文件夹(如 C:\Program Files\win-acme)并重建续期计划 |
| 提示 80 端口被占用 | 默认站点(Default Web Site)或其他软件抢了 80 | 在 IIS 里停掉不用的站点,或确认端口占用程序;保证你的站点独占 80 |
| 第二个 https 站点加不上 | 443 绑定没勾 SNI,端口冲突 | 添加 443 绑定时勾选「需要服务器名称指示(SNI)」 |
| 证书装好了但 IIS 没自动换 | 绑定没更新,或用了自签名证书 | 重新运行 wacs.exe 选 R 立即续期一次;确认绑定指向的是 Let's Encrypt 签发的证书 |
| 手机访问正常、电脑报错(或反过来) | 证书链不完整,部分设备对中间证书更敏感 | 用 SSL Labs 检测,按「Chain issues / Incomplete」处理 |
| 计划任务显示「上次运行失败」 | 任务运行时权限不足,或程序路径被改 | 确认任务以管理员/SYSTEM 运行、程序路径存在;在 win-acme 里重建续期计划 |
回滚怎么做
万一要退回改动之前的状态:
- 1. 去掉跳转:删掉或注释
web.config里的<rewrite>规则,网站回到不强制跳转的状态。 - 2. 去掉 https 绑定:IIS 管理器 → 站点 → 绑定 → 删掉 443 那条(证书文件仍在证书存储里,不影响 http 访问)。
- 3. 停掉续期任务:「任务计划程序」里禁用/删除 win-acme 的任务,或在
wacs.exe→ A: Manage renewals 里取消续期计划。 - 4. 彻底移除:删除
C:\Program Files\win-acme文件夹即可(它是绿色免安装的,不写注册表核心项)。
一页速查(可打印)
| 步骤 | 做什么 | 关键操作 | 成功标志 |
|---|---|---|---|
| ① 准备 | 网站能 http 打开、绑定有主机名、80/443 放行 | IIS 管理器 → 绑定 | 浏览器能打开 http://你的域名 |
| ② 下载 | 下 win-acme x64 trimmed 版 | 解压到 C:\Program Files\win-acme | wacs.exe 就位 |
| ③ 运行 | 管理员运行 wacs.exe | 右键 → 以管理员身份运行 | 出现主菜单 |
| ④ 申请 | N → Read bindings from IIS → 选站点 | 同意条款、填邮箱 | 显示申请成功、绑定已更新 |
| ⑤ 验证 | 看证书、看续期计划、看计划任务 | A: Manage renewals | 证书有效、续期计划可见 |
| ⑥ 跳转 | 装 URL Rewrite,加 301 规则 | 编辑 web.config | http:// 自动跳 https:// |
| ⑦ 监控 | 设一个到期提醒 | 外部监控服务 / 手机日历 | 到期前收到提醒 |
想省事的话,把这一页复制给 AI 智能体,让它按你的实际情况带你做;或者直接找我们做——见页面底部的终身维护服务。
答疑
常见问题
Windows 服务器上装 SSL 一定要花钱买证书吗?
不需要。win-acme 向 Let's Encrypt 免费申请,浏览器一样信任,加密强度与付费证书没有区别。真正值得花钱的是「部署 + 长期维护」的服务费,而不是证书本身。有人说要收几千元给你装一张「金融级证书」,那基本是不必要的支出。
win-acme 安全吗?会不会把我服务器的密码传出去?
win-acme 是开源的免费工具,在你自己服务器上运行,只需要能读 IIS 绑定、写证书存储和计划任务,不需要你的账号密码,也不会把私钥外传。要留意的是:证书私钥留在你服务器上,不要发给任何人;需要填邮箱时用公司邮箱即可。
申请时提示连接超时或验证失败,怎么办?
九成是 80 端口不通。win-acme 默认用 HTTP 验证,Let's Encrypt 要从外网访问你域名的 80 端口。请依次检查:云安全组是否放行 TCP 80、Windows 防火墙是否放行 TCP 80、80 端口有没有被别的程序占用、域名 A 记录是否指向这台服务器。四项都对还失败,临时关掉重定向规则和 CDN 再试。
证书会自动续期吗?我还需要做什么?
win-acme 会创建一个每天运行的 Windows 计划任务,快到期时自动续期并重新绑定 IIS,正常情况你什么都不用做。你需要做两件事:一是别移动或删除 win-acme 所在的文件夹(移动了任务就找不到程序);二是设一个外部到期监控,因为 Let's Encrypt 已不再发送到期提醒邮件。
装完证书,访问 http 还能打开,需要强制跳转吗?
建议做。装了证书但没跳转,访客输 http 或点旧链接仍会走不加密的通道,浏览器也可能仍显示不安全。IIS 需要先安装 URL Rewrite 模块,再添加一条 301 跳转规则;如果域名接了 Cloudflare,也可以直接用它的「始终使用 HTTPS」,二选一即可。
服务器上装的是宝塔 Windows 版或其他面板,还能用 win-acme 吗?
先看面板里有没有 SSL 入口:有就优先用面板申请,更简单。面板里没有、或者面板没有接管 IIS 的网站,就按本页用 win-acme 操作。注意不要让面板和 IIS 抢同一个 80 端口,否则证书验证会失败。
核实
资料来源与核实记录
价格、政策与版本信息均注明来源和核实日期。
| 事实 | 来源 | 核实日期 |
|---|---|---|
| win-acme 入门:Windows IIS 自动申请与续期 | win-acme.com | 2026-10-10 |
| IIS URL Rewrite 模块:创建重写规则(http 跳 https) | Microsoft Learn | 2026-10-10 |
| IIS URL Rewrite 模块下载地址 | iis.net | 2026-10-10 |
| Let's Encrypt 验证方式(HTTP-01 / DNS-01) | letsencrypt.org | 2026-10-10 |
| Let's Encrypt 频率限制(每域名每周 5 次签发等) | letsencrypt.org | 2026-10-10 |
| Let's Encrypt 证书有效期将缩短至 64/45 天(公告 2025-12-02) | letsencrypt.org | 2026-10-10 |
| Let's Encrypt 到期提醒邮件服务已结束(源材料记为 2025-06-04 起停止) | letsencrypt.org | 2026-10-10 |
| 未备案域名解析至中国内地服务器将被阻断 | help.aliyun.com | 2026-10-10 |
更新记录
2026-10-12 · v1.0:上线:路线 F(Windows IIS + win-acme)单页教程,含 7 项预检、菜单逐项说明、URL Rewrite 跳转、失败排查表与一页速查。
本专题全文以 CC BY 4.0 协议开源,可转载、改编,请注明出处:GitHub · iPythoning/ssl-guide-zh
交给我们
不想自己动手?
泓森互联提供 SSL 证书终身维护服务:部署、监控、自动续期与失效应急,一次购买长期有效。服务范围与价格以服务页为准;也可以先做免费体检,把情况摸清楚再决定。
留个联系方式,我们帮你看看
不确定自己的网站是什么情况?留下信息,或直接 预约诊断,我们把体检结果和修复路径说清楚。