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

如何在Azure服务中使用Key Vault公钥证书并通过DevOps Pipeline配置

替代WEBSITE_LOAD_ROOT_CERTIFICATES的Key Vault集成方案

核心逻辑

直接利用Azure App Service/Functions的内置能力,结合Key Vault存储自签名根/中间证书,通过配置项让应用自动加载并信任这些证书,全程无需手动编写证书加载代码。

一、Key Vault准备

  • 将组织的自签名根证书、中间证书以证书类型上传至Key Vault(支持.cer格式,上传时选择"证书"而非"秘密/密钥",确保证书链能被正确解析)
  • 为目标App Service/Functions的系统托管标识(或用户托管标识)分配Key Vault Certificates User权限,允许其读取Key Vault中的证书

二、App Service/Functions配置

  • 启用应用的系统托管标识(若使用用户托管标识,需先创建并关联至应用)
  • 添加以下应用配置项:
    • 若需将证书加载至信任根存储(对应原WEBSITE_LOAD_ROOT_CERTIFICATES的场景):
      设置WEBSITE_TRUSTED_ROOT_CERTIFICATES的值为Key Vault中证书的引用格式,示例:
      @Microsoft.KeyVault(SecretUri=https://<你的Key Vault名称>.vault.azure.net/secrets/<证书名称>)
      
      多个证书用逗号分隔即可。
    • 若仅需加载证书到应用的个人存储(供客户端证书认证等场景):
      设置WEBSITE_LOAD_CERTIFICATES为证书指纹或Key Vault引用,逻辑与原配置一致,但证书来源为Key Vault。

三、Azure DevOps Pipeline自动化实现

通过Pipeline完成证书上传、权限配置、应用设置的全流程自动化:

示例Pipeline代码

# 1. 上传自签名证书到Key Vault
- task: AzureKeyVault@2
  inputs:
    azureSubscription: '<你的Azure服务连接名称>'
    KeyVaultName: '<目标Key Vault名称>'
    UploadCertificateFile: './artifacts/internal-root-cert.cer' # 证书在Pipeline工件中的路径
    UploadCertificateName: 'internal-root-cert'
    UploadCertificateContentType: 'application/x-x509-ca-cert'

# 2. 为应用托管标识配置Key Vault访问权限
- task: AzureCLI@2
  inputs:
    azureSubscription: '<你的Azure服务连接名称>'
    scriptType: 'bash'
    inlineScript: |
      # 获取应用托管标识ID
      identity_id=$(az webapp identity show --name <App Service名称> --resource-group <资源组名称> --query id -o tsv)
      # 分配证书读取权限
      az keyvault set-policy --name <目标Key Vault名称> --object-id $identity_id --certificate-permissions get list

# 3. 配置应用的信任证书加载项
- task: AzureAppServiceSettings@1
  inputs:
    azureSubscription: '<你的Azure服务连接名称>'
    appName: '<App Service/Functions名称>'
    resourceGroupName: '<资源组名称>'
    appSettings: |
      [
        {
          "name": "WEBSITE_TRUSTED_ROOT_CERTIFICATES",
          "value": "@Microsoft.KeyVault(SecretUri=https://<目标Key Vault名称>.vault.azure.net/secrets/internal-root-cert)",
          "slotSetting": false
        }
      ]

关键说明

  • WEBSITE_TRUSTED_ROOT_CERTIFICATES会自动将Key Vault中的证书注入应用的信任根存储,HttpClient发起请求时会默认信任这些证书,无需额外代码配置
  • 若需同时加载多个证书,只需在配置值中用逗号分隔多个Key Vault引用
  • 确保Key Vault的防火墙规则允许App Service/Functions的出站IP访问(或启用"允许受信任的Microsoft服务访问此Key Vault"选项)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:10:14