You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用win-acme生成通配符证书并部署于所有IIS站点(含新增)

实现Let's Encrypt通配符证书批量部署到所有IIS站点(含未来新增站点)

1. 先获取通配符证书并导入Windows证书存储

不要直接通过--installation iis指定单个站点,先把证书导入到IIS通用的证书存储位置,为后续批量部署做准备:

wacs --source manual --host *.mydomain.com --validation route53 --route53accesskeyid <mykey> --route53secretaccesskey <mysecret> --accepttos --emailaddress admin@mydomain.com --verbose --test --installation store --storename WebHosting --storelocation LocalMachine

执行完成后,证书会存入本地计算机 > WebHosting证书存储,这是IIS默认读取证书的常用位置。

2. 批量部署到所有现有IIS站点

使用PowerShell脚本遍历所有站点,更新现有HTTPS绑定的证书,未配置HTTPS的站点自动添加绑定:

# 获取通配符证书的指纹
$certThumbprint = (Get-ChildItem -Path Cert:\LocalMachine\WebHosting | Where-Object { $_.Subject -match "CN=*.mydomain.com" }).Thumbprint

# 遍历所有IIS站点
foreach ($site in Get-IISSite) {
    # 更新现有HTTPS绑定的证书
    foreach ($binding in $site.Bindings | Where-Object { $_.Protocol -eq "https" }) {
        $binding.CertificateHash = $certThumbprint
        $binding.CertificateStoreName = "WebHosting"
        $binding.Update()
    }

    # 若站点无HTTPS绑定,自动添加
    if (-not ($site.Bindings | Where-Object { $_.Protocol -eq "https" })) {
        New-IISSiteBinding -Name $site.Name -BindingInformation "*:443:" -Protocol https -CertificateThumbprint $certThumbprint -CertificateStoreName WebHosting
    }
}

运行脚本前,确保已安装IISAdministration模块,可通过Install-Module -Name IISAdministration完成安装。

3. 自动部署到未来新增站点

要让后续新建站点自动使用该通配符证书,可通过两种方式实现:

  • 设置IIS默认绑定模板:打开IIS管理器,点击服务器节点进入「站点绑定」,添加一个HTTPS绑定并选择通配符证书,后续新建站点时会默认继承该模板(部分IIS版本支持)。
  • 配置证书续期自动同步:在wacs的续期任务中添加post-renewal脚本,每次证书更新后自动重新运行上述PowerShell脚本,确保所有站点(含新创建的)同步使用最新证书。操作方式为在wacs配置目录(默认C:\ProgramData\win-acme)中找到对应续期任务,添加Script类型的部署步骤,指向你的PowerShell脚本路径。

关键注意事项

  • 通配符证书必须使用DNS验证(你选择的Route53是正确方案),HTTP验证无法生成通配符证书。
  • 避免直接指定installationsiteid,该参数仅针对单个站点,不符合批量部署需求。

内容的提问来源于stack exchange,提问作者Appleoddity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:42:36