情况:
我们已经使用自定义ARM模板为客户端部署了多个相同的App Service实例。这些服务托管在客户端自己的Azure帐户上。部署后,客户端开始为所有面向Web的实例手动配置了自定义DNS名称和TLS证书。我们无权访问其私人证书(我们也不需要):
一切正常,但是...
问题:我担心如果/当我们必须重新部署我们的ARM模板时,TLS配置将被清空。通常,当客户端想要更改某些设置时,我将自定义并重新部署所有实例。我需要确保在这种情况下不会丢失其TLS配置。
我具有用于DNS和TLS绑定的ARM配置(引用私有证书指纹),也许将这些块合并到我们的ARM模板中足以持久保存客户端的配置?
{
"type": "Microsoft.Web/sites/hostNameBindings",
"apiVersion": "2018-11-01",
"name": "[concat(parameters('site_name'), '/', parameters('site_name'), '.xxxxxx.com')]",
"location": "West Europe",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
],
"properties": {
"siteName": "site-name",
"hostNameType": "Verified",
"sslState": "SniEnabled",
"thumbprint": "45DA3B...67"
}
}
...
"hostNameSslStates": [
{
"name": "[concat(parameters('site_name'), '.xxxxxx.com')]",
"sslState": "SniEnabled",
"thumbprint": "45DA3B...67",
"hostType": "Standard"
},
...
问题:即使没有私有证书的访问权限,有没有办法保留和合并客户的TLS设置?我在Azure ARM文档中找不到确定的答案。
澄清:我知道有更干净的方法可以通过ARM自动执行DNS / TLS配置,但是现在我无法更改设置,需要使用已有的东西。
如果不通过ARM进行SSL配置,则最好从ARM模板中完全省略这些部分。我们有相同的情况,并且效果很好。确保ARM以增量模式执行,否则您可能会遇到问题。
Microsoft.Web/sites/hostNameBindings
资源hostNameSslStates
资源中删除Microsoft.Web/sites
您可以使用像this一样简单的ARM模板对其进行测试:
{
"apiVersion": "2018-11-01",
"type": "Microsoft.Web/sites",
"kind": "app",
"name": "[variables('webAppPortalName')]",
"location": "[parameters('location')]",
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
]
}
不会触摸您的SSL配置,因此您的绑定保持不变。