我们有一个新的Azure前门标准配置文件资源,已配置为使用自定义域。原点和路线看起来是正确的。当我们直接向源发出请求时,它会按预期工作。然而,当我们通过前门配置文件发出请求时,我们在标头中得到以下错误(与X-Azure-DebugInfo标头一起发送):
X-Azure-ExternalError: 0x830c1011, '证书颁发机构不熟悉' .
浏览器的实际错误是:'Request cannot be serve .'
我们在网站上的证书是一个Go Daddy通配符证书链(多个cert crt文件组合)。我们试着运行curl with options和openssl,看看我们是否可以看到其中一个证书有问题(针对原始站点),但它们都表明证书是正确的。
我也看了一下这个页面:https://learn.microsoft.com/en-us/azure/frontdoor/front-door-route-matching?pivots=front-door-standard-premium,但是没有帮助。
我也检查了这个页面:https://ccadb-public.secure.force.com/microsoft/IncludedCACertificateReportForMSFT
以确保我的链中的Go Daddy根证书在此页面上。我可以确认是(2796BAE63F1801E277261BA0D77770028F20EEE4)。
我已打开诊断。有什么方法可以让我看到从前门到我们原点发出的实际请求,看看请求中是否有什么奇怪的地方?还有什么问题呢?
感谢这个应用程序运行在aks上,如果请求是向根主机名或ip地址发出的,它会用假证书响应,而不是直接使用配置的自定义主机名。事实证明,当frontdoor发出请求时,在frontdoor向自定义主机名请求发出请求之前,有一个请求设置涉及查询ip/root主机名。
解决这个问题的方法包括确保aks不使用假证书响应tls上的根主机名请求,而是使用有效证书。或者将具有有效证书的另一个地址映射到aks入口IP,并在自定义主机名源组配置中使用该地址。