如何将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
相关产品推荐
相关产品推荐

