不同订阅的 Key Vault 中的 SSL 证书来自 Azure 应用程序网关的错误 ERR_SSL_UNRECOGNIZED_NAME_ALERT

问题描述 投票:0回答:1

我已经使用 Terraform 设置了应用程序网关和密钥保管库。 如果我在本地存储证书,所有这些似乎都可以与应用程序网关一起使用,但是如果我将其设置为使用密钥保管库中的证书,然后浏览到该站点,我会收到错误

ERR_SSL_UNRECOGNIZED_NAME_ALERT
,这意味着侦听器已被禁用。 我看到其他人报告了类似的问题(例如,Azure 应用程序网关,如何链接到不同 Azure 订阅上的 SSL 证书?);虽然那里的答案都不适合我/有些答案现在已经过时了。

  • 虽然 Azure 门户 UI 不支持不同订阅中的密钥保管库,但 Azure 本身支持(相关文档);所以我能够通过 TerraForm 设置证书。
    • 旁注:我还使用门户手动将证书直接上传到 AppGW,以证明当证书位于本地时一切正常;确实如此。
    • 旁注 2:然后,我使用 PowerShell 将值设置回使用 Key Vault,以防出现一些 Terraform 问题;但使用 PowerShell 给出了相同的结果(即成功更新了配置,但导致
      ERR_SSL_UNRECOGNIZED_NAME_ALERT
      异常重新出现)。
      Set-AzApplicationGatewaySslCertificate -ApplicationGateway $appGw -Name 'wildcard-example-com' -KeyVaultSecretId 'https://myKeyVault.vault.azure.net/secrets/wildcard-example-com/' -Verbose | Set-AzApplicationGateway -Verbose
  • 所有资源都在同一个区域(
    UK South
    )。
  • 我的应用程序网关已连接到 VNet
    • 此关联是通过将子网 ID 传递到 gateway_ip_configuration 块来配置的。
    • VNet 连接到我们的 VHub。
    • 有一条路由规则可确保流向私有 IP 范围的流量通过我们的防火墙(我们在其中托管内部流量规则)进行定向,而流向公共范围的流量则直接传至互联网根据文档
    • 没有规则阻止 AppGW 和 FW 之间的流量(在相关子网上没有配置 NSG,没有会影响 FW 上的规则;FW 日志不显示 AppGW 和 KeyVault 之间的流量(被拒绝或其他情况),尽管我们启用了完整的日志记录)。
    • 子网具有关联的
      Microsoft.KeyVault service endpoint
    • 我们的内部 DNS 服务器与 VNet 关联/这些服务器可以正确解析 Key Vault 的内部 IP 地址(即显示 Key Vault 的条件转发器和私有 DNS 区域已正确配置)
  • 我的密钥保管库已连接到不同的 VNet
    • 密钥保管库通过专用端点连接到此 vnet
    • 密钥库已设置
      Disable public access
      Allow trusted Microsoft services to bypass this firewall
    • 此 vnet 还与 VHub 对等互连,所有流量都通过 FW 路由(即,与其他 vnet 的连接将通过 FW 以及公共出口;不存在公共入口,因为它被 Key Vault 的阻止)网络配置如上所述)。
  • AppGW 具有关联的托管身份
  • 此托管身份是在密钥保管库的访问策略中配置的,具有
    get
    秘密权限(事实上,我目前已授予所有可用权限,只是为了将安全策略视为潜在原因)。 注意:我正在使用
    vault access policy
    ;不是
    RBAC
  • 应用程序网关的 ssl 证书设置中使用的路径正确 - 即没有拼写错误,指向正确的密钥保管库,指向
    /secrets/
    路径,并且不包含版本信息。

我错过了什么,或者我可以采取任何调试步骤来获取有关 AppGW 为何无法从 KeyVault 加载此证书的更多信息吗?

azure networking terraform azure-keyvault azure-application-gateway
1个回答
0
投票

我与 MS 支持人员通话,他们解决了我的问题。

密钥保管库使用的

private dns zone
privatelink.vaultcore.azure.net
已配置了我的域控制器所在的 VNet;这些域控制器具有针对各个区域的条件 dns 转发器,包括
Virtual Network Links
将请求转发到
vaultcore.azure.net
。 这意味着当我们的 DC 用于 DNS 时,它们会将资源解析为专用端点的内部 IP。
但是,尽管 AppGW 所连接的 VNet 已正确配置为使用我们的 DNS 服务器,因此应该使用内部 IP 安全地连接到 Key Vault,但这似乎并没有发生。

通过向我们的

168.63.129.16

区域添加另一个

Virtual Network Link
,以应用程序网关的 VNet 为目标,一切都开始工作。
注意:进行上述更改后,仍然失败;我发现运行 

privatelink.vaultcore.azure.net

导致 AppGW 重新尝试提取证书,从而触发它利用现已修复的问题。 (我不确定这是否重要,但每次运行上述命令时,我都会交替包含

Set-AzApplicationGatewaySslCertificate -ApplicationGateway $appGw -Name 'wildcard-example-com' -KeyVaultSecretId 'https://myKeyVault.vault.azure.net:443/secrets/wildcard-example-com/' -Verbose | Set-AzApplicationGateway -Verbose
端口信息以确保字符串不同,以便检测到更改。
希望这对将来的其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.