在应用程序网关上添加第二个多站点 HTTPS 侦听器时,出现以下异常:
无法将配置更改保存到应用程序网关“MyAppGateway”。错误:必须为应用程序网关中的证书 'MyResourceGroup/providers/Microsoft.Network/applicationGateways/MyAppGateway/sslCertificates/myCertificateName'>MyAppGateway/myCertificateName' 指定 Data 或 KeyVaultSecretId。
无论我是为两个侦听器使用相同的证书(SAN 列表涵盖不同的域),还是为每个侦听器配置单独的证书,都会发生此错误。
一旦遇到此错误,我就无法以任何方式更新应用程序网关/唯一的解决方法似乎是删除它。
这是一个已知问题,还是我做错了什么?我正在按照此处描述的步骤进行操作;只有我对初始 SSL 证书使用自签名证书(即,而不是让 LetsEncrypt 颁发初始证书/因为它无论如何都会被覆盖)。当我为单个站点执行此 POC 时,一切都按预期工作;所以这个问题似乎与我对多站点功能的使用有关(即有不同的 FQDN 指向应用程序网关的共享公共 IP,然后根据主机标头值将请求路由到不同的后端)。
修复损坏的应用程序网关状态
通过运行以下 PowerShell,我能够删除有问题的证书。我无法通过门户网站找到任何选项。
通过查看返回证书的值(即在我们删除它之前),我们发现了问题。问题不是我添加了第二个证书,而是第一个证书使网关处于无效状态,尽管我在完成该步骤时说它是成功的。
根本原因
我尝试了一些选项(例如 LetsEncrypt 颁发的证书、各种证书名称和导出密码)。最终我发现使用不包含井号 (
£
) 符号的导出密码和包含连字符 () 的证书名称-
允许我创建一个不会导致应用程序网关遇到配置错误的侦听器/转到无效状态。我发现如果我尝试通过密钥库安装证书,就会出现这个错误。但是,如果我直接上传了 PFX 文件(通过门户中的“侦听器”刀片),它工作正常 - 如果我然后将其更改回从密钥库获取证书,那么一切正常。