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

如何将App Service从BYOC切换为Azure Managed Certificate并批量创建?

批量将App Service自定义域名切换为Azure托管证书

如果你的多个App Service已使用自定义域名并上传了自有证书(BYOC),想要批量切换到Azure托管证书以自动续期,可通过Azure CLI或PowerShell脚本实现,以下是具体操作方法:

前提条件

  • 所有目标自定义域名已完成DNS验证(Azure托管证书要求域名必须通过验证)
  • 已登录Azure账号(Azure CLI或PowerShell已完成身份验证)
  • 确保Azure CLI或Az PowerShell模块为最新版本

方法一:使用Azure CLI批量操作

通过脚本遍历指定范围内的App Service,为每个已验证的自定义域名创建并绑定托管证书:

# 切换到目标订阅,替换为你的订阅ID
az account set --subscription "你的订阅ID"

# 获取目标App Service列表(如需限定资源组,添加 --resource-group "你的资源组名称")
app_services=$(az webapp list --query "[].{name:name, resourceGroup:resourceGroup}" -o tsv)

# 遍历每个App Service
while read -r app_name resource_group; do
    # 筛选出非默认.azurewebsites.net的自定义域名
    custom_domains=$(az webapp config hostname list --name $app_name --resource-group $resource_group --query "[?not_contains(name, '.azurewebsites.net')].name" -o tsv)
    
    # 为每个域名创建托管证书并绑定
    for domain in $custom_domains; do
        echo "处理App Service: $app_name ($resource_group),域名: $domain"
        az webapp config ssl create --name $app_name --resource-group $resource_group --hostname $domain --certificate-type Managed
        sleep 10 # 等待操作完成,避免API请求过于频繁
    done
done <<< "$app_services"

注意事项

  • 若只需处理特定资源组的App Service,在az webapp list命令后添加资源组参数即可
  • 脚本会自动替换原有绑定的BYOC证书,操作完成后可手动删除旧证书
  • 若域名未验证,命令会报错,需先完成DNS验证再执行

方法二:使用PowerShell批量操作

通过Az PowerShell模块实现相同逻辑:

# 切换到目标订阅
$subscriptionId = "你的订阅ID"
Set-AzContext -Subscription $subscriptionId

# 获取目标App Service列表(如需限定资源组,添加 -ResourceGroupName "你的资源组名称")
$appServices = Get-AzWebApp

foreach ($app in $appServices) {
    # 筛选自定义域名
    $customDomains = Get-AzWebAppHostNameBinding -WebApp $app | Where-Object { $_.Name -notlike "*.azurewebsites.net" }
    
    foreach ($domain in $customDomains) {
        Write-Host "处理App Service: $($app.Name) ($($app.ResourceGroup)),域名: $($domain.Name)"
        New-AzWebAppCertificate -WebApp $app -HostName $domain.Name -CertificateType Managed
        Start-Sleep -Seconds 10
    }
}

注意事项

  • 若未安装Az模块,可执行Install-Module -Name Az -AllowClobber -Scope CurrentUser安装
  • 执行前需通过Connect-AzAccount完成Azure账号登录

后续操作

  • 操作完成后,可在Azure门户的App Service「SSL设置」中确认证书类型为「Managed」
  • Azure会自动负责托管证书的续期和更新,无需手动干预
  • 确认新证书正常工作后,可删除原有的自有证书

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:42:06