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

Azure App Service执行槽位交换时公共证书未保留到生产槽问题求助

问题根因

  • 官方文档描述的交换自动同步公共证书,仅适用于用户自行上传的自定义公共证书,Azure提供的免费托管证书默认属于槽位粘性资源,不会随槽位交换同步,属于产品设计限制。
  • 配置WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS为False未生效,是因为该全局配置优先级低于单独配置的槽位粘性规则,证书绑定相关的规则默认仍被标记为粘性。

可行解决方案

方案1:调整槽位粘性规则实现交换自动同步

移除证书相关配置的粘性属性,交换时即可自动同步证书绑定:

# 获取当前App Service的槽位粘性配置
$slotConfig = Get-AzWebAppSlotConfigName -ResourceGroupName $ResourceGroup -Name $ServiceName
# 从粘性配置列表中移除证书相关条目
$slotConfig.ConnectionStringNames = $slotConfig.ConnectionStringNames | Where-Object { $_ -notlike "*certificate*" }
$slotConfig.AppSettingNames = $slotConfig.AppSettingNames | Where-Object { $_ -notlike "*WEBSITE_LOAD_CERTIFICATES*" }
# 更新槽位粘性配置
Set-AzWebAppSlotConfigName -ResourceGroupName $ResourceGroup -Name $ServiceName -AppSettingNames $slotConfig.AppSettingNames -ConnectionStringNames $slotConfig.ConnectionStringNames

配置完成后再执行槽位交换,证书绑定会随交换同步到生产槽。

方案2:预绑定证书到暂存槽(推荐,稳定性更高)

App Service公共证书属于订阅级资源,可直接绑定到同一应用的所有槽,无需跨槽复制,操作步骤:

  1. 列出当前订阅下所有公共证书获取目标证书指纹
Get-AzWebAppCertificate -ResourceGroupName $ResourceGroup | Select-Object Thumbprint, SubjectName
  1. 执行绑定命令将证书绑定到暂存槽
New-AzWebAppSSLBinding -ResourceGroupName $ResourceGroup -WebAppName $ServiceName -Slot $SourceSlotName -Name "你的应用域名" -CertificateThumbprint "目标证书指纹" -SslState SniEnabled
  1. 执行正常槽位交换即可,交换完成后可按需清理旧暂存槽的冗余证书绑定。

注意事项

如果使用的是Azure免费托管证书,不支持跨槽同步,必须为每个槽单独绑定对应域名的托管证书。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:27:01