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

Azure自定义域名SSL绑定:PowerShell更换证书指纹失败求助

解决批量更新Web App自定义域名SSL绑定证书的问题

首先,你遇到的「未找到自定义域名」报错,核心原因是用错了命令:New-AzWebAppSSLBinding是新建SSL绑定的命令,而你的场景是域名已经存在旧证书的绑定了,所以应该用Set-AzWebAppSSLBinding来更新已有的绑定,而不是尝试新建。

下面是完整的批量解决方案,适用于100+域名的场景:

步骤1:确认前提条件

  • 确保新证书已经上传到Web App所在的资源组中,可以用以下命令验证:
    Get-AzWebAppCertificate -ResourceGroupName "你的资源组名"
    
    输出里应该能看到你要使用的新证书及其指纹$newthumbprint。
  • 确认新证书包含所有要更新的自定义域名(避免出现证书不匹配的错误)。

步骤2:批量更新SSL绑定的脚本

直接用下面的脚本,替换对应的参数即可:

# 配置参数
$resourceGroupName = "你的资源组名称"
$webAppName = "你的Web应用名称"
$newThumbprint = "新证书的指纹值"
$sslState = "SniEnabled"  # 大部分场景用SNI绑定,若为IP-based绑定则改为"IpBasedEnabled"

# 获取所有已绑定SSL的自定义域名(排除Web App默认的.azurewebsites.net域名)
$existingSslBindings = Get-AzWebAppSSLBinding -ResourceGroupName $resourceGroupName -WebAppName $webAppName | 
    Where-Object { $_.Name -notlike "*.azurewebsites.net" }

# 循环更新每个域名的SSL绑定
foreach ($binding in $existingSslBindings) {
    try {
        Write-Host "正在更新域名: $($binding.Name) 的SSL绑定..."
        Set-AzWebAppSSLBinding -ResourceGroupName $resourceGroupName `
            -WebAppName $webAppName `
            -Thumbprint $newThumbprint `
            -Name $binding.Name `
            -SslState $sslState `
            -ErrorAction Stop
        Write-Host "域名 $($binding.Name) 更新成功!`n"
    }
    catch {
        Write-Error "域名 $($binding.Name) 更新失败: $_"
    }
}

关键说明

  1. 命令选择:Set-AzWebAppSSLBinding专门用于修改已存在的SSL绑定,会覆盖旧的证书指纹,这正是你需要的批量更新场景;而New-AzWebAppSSLBinding仅适用于给未绑定过SSL的域名创建新绑定,所以会出现找不到已存在域名的报错。
  2. 错误处理:脚本中加入了try-catch块,确保单个域名更新失败不会中断整个批量任务,同时会输出错误信息方便排查。
  3. SSL状态:SniEnabled是目前最常用的SSL绑定方式(支持多个域名共享一个IP),如果你的Web App使用的是IP-based绑定,替换为IpBasedEnabled即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:53:09