获得从Azure的关键库的最新版本证书的ARM模板

问题描述 投票:1回答:1

创建需要安装位于蔚蓝的关键金库内的SSL证书的ARM模板。如果我指定与指纹认证,它工作正常:

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"
   }
}'

所以我的问题是:如何引用证书的方式,我得到的最新版本?

为了清楚起见,我使用的ARM模板的VM的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"
        }
      ]
    }
]

注:我会觉得很奇怪,你可以指定最新版本的操作系统安装,但不能指定要安装最新版本的证书。

azure azure-resource-manager azure-keyvault arm-template azure-template
1个回答
1
投票

有这样做的直接\简单的方法。重点库心不是正好手臂模板友好。

作为juunas建议你可以写一个脚本或使用自定义脚本扩展从主要的库使用托管服务身份直接拉的数据,例如。


0
投票

据@ 4c74356b41的aswer我通过我的Python脚本自做的。

      data = json.loads(kv_auth_response.content)
      #
      ## Lets find youngest vesrion of certificate
      #
      if len(data['value']) > 0:
         for x in range(len(data['value'])):
             if x == 0:
                youngest = data['value'][x]['attributes']['exp']
                cert_url = data['value'][x]
             if data['value'][x]['attributes']['exp'] > youngest:
                youngest = data['value'][x]['attributes']['exp']
                cert_url = data['value'][x]
         arry = cert_url['id'].split('/')
...
         cert_version = arry[len(arry)-1]

在循环的第一步骤中,到期日期的值被分配给“年轻的”变量。在接下来的步骤脚本到期日期与它进行比较,当条件满足分配。后循环脚本“yougests” cert_url分裂和阵列“cert_version”变量的最后部分分配。

这个问题,你可以在我的脚本看到BYOC自定义域的完整视图。链接:https://github.com/przemika/azure-byoc-for-custom-domain/blob/master/start-byoc.py

© www.soinside.com 2019 - 2024. All rights reserved.