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

Azure应用网关无法自动获取Key Vault更新的SSL证书问题求助

问题:Azure应用网关无法自动同步Key Vault中更新的SSL证书
  • 已在应用网关监听器中引用Key Vault(KV),但上传新SSL证书到KV、更新Web App自定义域证书后,应用网关始终无法自动识别证书新版本,必须手动执行terraform plan和terraform apply才能生效
  • 最初直接加载证书时,以为重新执行Terraform部署是更新证书的常规方式,但切换到KV关联模式后问题依旧
  • DEV、QA两个环境均出现该问题

已尝试的配置操作

# 获取要修改的应用网关
$appgw = Get-AzApplicationGateway -Name MyApplicationGateway -ResourceGroupName MyResourceGroup
# 指定用户分配托管标识的资源ID(可从托管标识属性中获取)
Set-AzApplicationGatewayIdentity -ApplicationGateway $appgw -UserAssignedIdentityId "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity"
# 从Key Vault获取密钥ID
$secret = Get-AzKeyVaultSecret -VaultName "MyKeyVault" -Name "CertificateName"
$secretId = $secret.Id.Replace($secret.Version, "") # 移除密钥版本,让应用网关后续同步时使用最新版本
# 指定Key Vault的密钥ID
Add-AzApplicationGatewaySslCertificate -KeyVaultSecretId $secretId -ApplicationGateway $appgw -Name $secret.Name
# 提交应用网关的更改
Set-AzApplicationGateway -ApplicationGateway $appgw

排查与解决方案

1. 确认托管标识的权限配置

关联的用户分配托管标识必须拥有Key Vault的Get权限——注意要针对证书(或密钥,因为KV中的证书会以密钥形式存储)配置Get操作,且权限范围要覆盖整个Vault,不能仅针对单个证书。配置完成后等待5-10分钟,让权限生效后再测试。

2. 检查Key Vault的网络访问策略

如果Key Vault启用了虚拟网络/防火墙限制,需确保应用网关所在的子网已被添加到KV的允许访问列表中。若不确定是否是网络问题,可临时关闭网络限制进行测试,排除网络策略导致的同步失败。

3. 验证应用网关的证书引用方式

登录Azure门户进入应用网关的「SSL证书」页面,确认目标证书的来源为Key Vault,且显示的密钥ID不包含版本号。如果监听器仍引用本地加载的旧证书,需更新监听器配置为使用KV中的证书。

4. 强制触发证书同步

若上述配置均正确但同步仍失败,可尝试以下方式强制触发:

  • 重复执行已有的PowerShell脚本,重新应用证书配置
  • 在Azure门户中对应用网关执行「重新启动」操作(注意:该操作会导致短暂服务中断)

5. 排查Terraform配置冲突

由于使用Terraform管理应用网关,需检查代码是否存在锁定证书版本或覆盖KV配置的情况:

  • 确保Terraform中azurerm_application_gateway资源的ssl_certificate块使用的是不带版本号的KV密钥ID
  • 避免在代码中硬编码证书版本,否则每次terraform apply都会强制覆盖为旧版本
  • 执行terraform show查看当前状态,确认证书配置与预期一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:11:32