我使用流量管理器在 Azure 中的主动/被动配置中设置了一个 Web 应用程序,因此两个应用程序服务位于两个不同的区域,前面有 TM。我在两者上配置了相同的自定义域,并希望在两者上使用 Azure 应用服务托管证书。
TM 配置文件使用优先级模式进行配置,因为我希望所有流量都转到主应用服务,并且仅在发生停机时才转到辅助应用服务。
当我尝试在第二个应用服务上添加证书时,我收到类似于以下内容的消息:
Hostname not eligible for App Service Managed Certificates creation. Ensure that your domain abc.xyz.com has an active CNAME record which is set to my-secondary-app-service.azurewebsites.net.
通过此设置,CNAME 必须转到 TM 地址,这样做允许在 TM 后面的所有端点上配置自定义域,但只允许在主端点上配置托管证书。
如何在辅助端点上配置托管证书,而无需停机和 CNAME 更改?
最佳答案
因此,根据 this thread 中的详细信息我想出了一个解决方法来设置此问题,不需要更改 CNAME 或停机,但部分需要在门户中手动完成。
在两个端点上配置自定义域名后,您可以使用上面链接中的脚本的以下部分为辅助端点创建证书:
$resourceGroupName = "my-resource-group"
$appServicePlan = Get-AzResource -Name "my-app-service-plan" `
-ResourceGroupName $resourceGroupName `
-ResourceType "Microsoft.Web/serverfarms"
$propertyObject = @{
canonicalName = "mydomain.com"
serverFarmId = $appServicePlan.ResourceId
}
# create the certificate - Azure managed certificate names are usually of the form <domain name>-<app service name>
New-AzResource -Name "my-unique-certificate-name" `
-Location "westus" `
-PropertyObject $propertyObject `
-ResourceGroupName $resourceGroupName `
-ResourceType Microsoft.Web/certificates `
-Force
完成上述操作后,您只需配置从自定义域名到上面创建的证书的绑定(bind)即可完成该过程。这是通过辅助应用服务上的“自定义域”下域名旁边的“添加绑定(bind)”选项来完成的。
请注意,使用上面链接中的脚本的第二部分无法执行第二步(此操作失败,提示缺少 TXT DNS 记录 - 我尝试了各种选项,但没有一个有效)。也许可以通过 ARM 模板添加绑定(bind),从而使整个过程自动化 - 我还没有尝试过这一点。
关于辅助实例上的 Azure 应用服务托管证书无需停机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68441838/