跳转到内容

Windows TLS 证书:win-acme、IIS 绑定与续期

核验于 2 分钟阅读

用 win-acme 申请证书、绑定 IIS、为 Nginx 导出 PEM,并在旧证书过期前证明续期真的可用。

测试环境Standard / Datacenter · 版本号 26100.33650 · x64
E1
版本号
26100.33650
版本
Standard / Datacenter
架构
x64
支持
文档(E1)
证据
E1官方文档
核验日期
2026-10-29
页面类型
任务

Windows/IIS 上,win-acme 是实用的 ACME 客户端:

  1. 申请/续期证书。
  2. 装进 Windows 证书存储。
  3. 绑定 IIS 站点。
  4. 计划续期。
  5. 在过期之前测续期。

Nginx 要导出 PEM(fullchain.pem + privkey.pem),续期后 reload。

下载 x64 zip,解压到 C:\win-acme,管理员运行 wacs.exe。第一次用交互菜单最稳:

  • N 新证书;
  • 手动输入或选 IIS 站点;
  • 选站点/主机名;
  • HTTP-01(80)或 DNS-01(通配/内网);
  • 存储:Windows store / PEM;
  • 安装到 IIS;
  • 创建续期任务。

CLI 形态(按你版本的 wacs --help 核对):

终端窗口
C:\win-acme\wacs.exe --target iis --host lab.example `
--installation iis --store certificatestore

不要从旧博客直接粘 CLI 参数而不核对当前版本。

win-acme 装到 IIS 时会创建/更新 HTTPS 绑定。验证:

终端窗口
Get-WebBinding -Name 'Lab' -Protocol https
netsh http show sslcert hostnameport=lab.example:443

SNI 用 hostname:port 绑定并保持 SslFlags 1。只绑 IP 无法在同一 IP 上服务多张证书。

Nginx 不读 Windows 存储。导出:

  • 证书 + 中间证书为 fullchain.pem;
  • 私钥为 privkey.pem;
  • 私钥 ACL 只给服务账户 + Administrators。

然后:

ssl_certificate C:/nginx/certs/fullchain.pem;
ssl_certificate_key C:/nginx/certs/privkey.pem;

每次续期后 reload(nginx -s reload);只换文件不 reload,旧证书还在内存里。

终端窗口
Get-ChildItem Cert:\LocalMachine\My |
Where-Object Subject -like '*lab.example*' |
Select-Object Subject,NotAfter,Thumbprint

确认续期任务存在且跑过。维护窗口做一次强制 dry run/续期。证书续了但没重新绑定,仍是故障。

  • Let’s Encrypt 有速率限制;不要循环失败验证。
  • 通配必须 DNS-01;HTTP-01 不能签 *.example.com。
  • DNS-01 凭据权限很大;最小权限保存。
  • 内网名字拿不到公网证书;用内部 CA 或 Caddy tls internal(实验)。

E1。实验室 WAC 用自签名证书,没有跑 win-acme;命令是 Server 2025 上待验证的生产路径。

来源