如何将Azure KeyVault中存储的SSL证书绑定到Application Gateway
问题排查与修复方案
你遇到的报错有多个可能的触发原因,按优先级逐一排查修改即可:
- 身份标识名称不匹配
你代码中应用网关绑定的用户分配标识为azurerm_user_assigned_identity.appgw_uaid,但Key Vault访问策略里授权的标识为azurerm_user_assigned_identity.uaid_appgw,两者资源名不一致,导致应用网关没有权限读取证书私钥。请统一两处的标识引用。 - 访问权限配置缺失
你给应用网关的用户分配标识只授予了secret的Get权限,还需要额外增加certificate的Get权限才能完整读取证书信息,修改访问策略配置如下:access_policy { object_id = azurerm_user_assigned_identity.appgw_uaid.principal_id tenant_id = data.azurerm_client_config.current.tenant_id secret_permissions = [ "Get" ] # 新增证书Get权限 certificate_permissions = [ "Get" ] } - 私钥不可导出配置错误
应用网关需要获取证书私钥完成TLS终止,你当前配置中key_properties.exportable为false,需修改为true:key_properties { exportable = true key_size = 2048 key_type = "RSA" reuse_key = false } - PFX加密算法不兼容
Azure Application Gateway不支持3DES加密的PFX证书,你需要将现有PFX证书转换为AES-256加密格式后再生成base64内容导入,可使用以下openssl命令转换:openssl pkcs12 -in my-ssl-cert.pfx -passin pass:<旧密码> -nodes | openssl pkcs12 -export -keypbe AES-256-CBC -certpbe AES-256-CBC -passout pass:<新密码> -out my-ssl-cert-aes256.pfx - Key Vault基础配置缺失
关联应用网关的Key Vault必须开启软删除和清除保护,需要在azurerm_key_vault资源中补充以下配置:soft_delete_retention_days = 7 purge_protection_enabled = true
完成以上修改后重新执行Terraform apply即可解决报错。
内容的提问来源于stack exchange,提问作者wertyq
相关产品推荐
相关产品推荐

