【发布时间】:2019-01-28 12:47:04
【问题描述】:
创建需要安装 SSL 证书的 ARM 模板,该证书位于 Azure 密钥保管库中。如果我用指纹指定证书,它可以正常工作:
https://contoso.vault.azure.net/secrets/web01-test-contoso-com/968bf207451149d3aceb390065af9d3a
但是由于证书在滴答作响,这会将可能过时的依赖项硬编码到 ARM 模板中。我宁愿只指定最新版本(就像它在门户中显示的那样)。但是,我没有找到任何说明如何做到这一点的文档,甚至没有提到是否可能。
我使用以下方法进行了几个实验:
https://contoso.vault.azure.net/secrets/web01-test-contoso-com
和
https://contoso.vault.azure.net/secrets/web01-test-contoso-com/latest
但在这两种情况下,我都收到了相同的错误消息:
message '{
"error": {
"code": "InvalidParameter",
"message": "https://contoso.vault.azure.net/secrets/web01-test-contoso-com/latest is
not a valid versioned Key Vault Secret URL. It should be in the format
https://<vaultEndpoint>/secrets/<secretName>/<secretVersion>.",
"target": "certificateUrl"
}
}'
所以我的问题是:如何以获取最新版本的方式引用证书?
为了清楚起见,我使用 VM 的 ARM 模板的 secrets 部分中的 URL,如下所示,它从 Azure 密钥库获取证书并将其安装到 Windows 证书存储中。
"secrets": [
{
"sourceVault": {
"id": "[resourceId(parameters('keyVaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
},
"vaultCertificates": [
{
"certificateUrl": "https://contoso.vault.azure.net/secrets/web01-test-contoso-com/latest",
"certificateStore": "My"
}
]
}
]
注意:我觉得奇怪的是,您可以指定要安装的操作系统的最新版本,但您不能指定安装最新版本的证书。
【问题讨论】:
-
如果这不可能,您可以在 ARM 部署后编写一个执行此操作的脚本。
-
在您的管道中,添加一个获取最新版本的脚本,然后将其作为参数传递给 arm 模板。
标签: azure azure-resource-manager azure-keyvault arm-template azure-template