【问题标题】:Adding a certificate to azure VM from Key Vault从 Key Vault 将证书添加到 Azure VM
【发布时间】:2019-05-25 01:01:06
【问题描述】:

我正在使用此链接上的步骤将应用服务证书配置到 Azure 虚拟机 - https://blogs.msdn.microsoft.com/appserviceteam/2017/10/26/configure-app-service-certificate-to-azure-virtual-machine/

我已经完成了第 1 步到第 6 步。我在尝试将证书从密钥保管库添加到 VM 时遇到了问题。我使用了链接中的步骤:https://docs.microsoft.com/en-us/azure/virtual-machines/windows/tutorial-secure-web-server

我在 azure 门户的云 shell 上使用了以下脚本。

$certUrl = (Get-AzureKeyVaultSecret -VaultName "xxxKeyVault" -Name "xxxcert").Id;

$vm=Get-AzureRmVM -ResourceGroupName "xxx_Group" -Name "XXX"

$vaultId=(Get-AzureRmKeyVault -VaultName "xxxKeyVault").ResourceId

$certStore = "MyCert";

$vm = Add-AzureRmVMSecret -VM $vm -SourceVaultId $vaultId -CertificateStore $certStore -CertificateUrl $certURL

Update-AzureRmVM -ResourceGroupName "xxx_Group" -VM $vm>

但是到最后一个脚本,我得到了错误

Update-AzureRmVM:列表 vaultCertificates 包含 (https://xxxkeyvault.vault.azure.net/secrets/xxxxxx/xxxxxx, mycert) 的重复实例,这是不允许的。 错误代码:无效参数 错误消息:列表 vaultCertificates 包含 (https://xxxkeyvault.vault.azure.net/secrets/xxxxxx/xxxxxx, mycert) 的重复实例,这是不允许的。 错误目标:Va​​ultCertificates 状态码:400 原因短语:错误请求 操作ID:51078b39-72a0-4a6f-be02-e0fff12dff8b 在行:1 字符:1 + 更新-AzureRmVM -ResourceGroupName "xxxx_Group" -VM $vm + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~ + CategoryInfo : CloseError: (:) [Update-AzVM], ComputeCloudException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Compute.UpdateAzureVMCommand

我错过了什么吗? 我的虚拟机一个窗口。

更新 我已经验证我在 Vm 上拥有多个相同的证书。请问,我到底要删除哪一个?

"secrets": [
        {
          "sourceVault": {
            "id": "/subscriptions/xxxx/resourceGroups/xxxx/providers/Microsoft.KeyVault/vaults/xxxKeyVault"
          },
          "vaultCertificates": [
            {
              "certificateUrl": "https://xxxkeyvault.vault.azure.net/secrets/xxxx/xxxx",
              "certificateStore": "My"
            },
            {
              "certificateUrl": "https://xxxxkeyvault.vault.azure.net/secrets/xxxxx/xxxxx",
              "certificateStore": "My"
            },
            {
              "certificateUrl": "https://xxxxkeyvault.vault.azure.net/secrets/xxxxxx/xxxxxxx",
              "certificateStore": "My"
            },
            {
              "certificateUrl": "https://xxxxkeyvault.vault.azure.net/secrets/xxxxxxx/xxxxxxxx",
              "certificateStore": "MyCert"
            }
          ]
        },
         {
      "sourceVault": {},
      "vaultCertificates": {}
    }
  ],

【问题讨论】:

    标签: azure azure-keyvault


    【解决方案1】:

    你需要做的是:

    1. 打开 resources.azure.com
    2. 导航到您的虚拟机
    3. 点击编辑,从osProfile中移除证书,点击补丁
    4. 重新运行您的脚本

    Azure 的问题 - 它不知道(或关心)你的虚拟机是否真的有你要安装的证书,它抱怨的是虚拟机定义已经有这个证书,所以它不能添加它。

    【讨论】:

    • 我见过超过 4 个。我是删除所有这些还是只留下其中一个。其次,如果是全部,我是否将其从“秘密”节点中删除?感谢您的帮助。
    • 什么是秘密节点?
    • 你可以删除你想再次添加的那个,或者你可以删除所有的,这并不重要,它不会从虚拟机中删除它们
    • 对不起,我是新手,没有足够的声望来投票给你。非常感谢。你真的帮了大忙。
    • 这可能意味着您需要接受这个答案而不是另一个;)
    【解决方案2】:

    向 Azure VM 添加证书时,应首先确定 VM 的操作系统类型。使用您遵循的文档Secure a web server on a Windows virtual machine in Azure with SSL certificates stored in Key Vault 中的描述:

    这些 SSL 证书可以存储在 Azure Key Vault 中,并允许 将证书安全部署到 Windows 虚拟机 (VM) 在 Azure 中。

    似乎只适用于 Windows VM,我也做了测试。所以如果你想给 Linux VM 添加证书,你可以看看Secure a web server on a Linux virtual machine in Azure with SSL certificates stored in Key Vault

    另外,错误还显示:

    Update-AzureRmVM:列出 vaultCertificates 包含重复的实例 (https://xxxkeyvault.vault.azure.net/secrets/xxxxxx/xxxxxx, mycert),这是不允许的。

    我建议您最好检查一下虚拟机是否已经拥有相同的证书。在我这边,如果你两次添加相同的证书,第二次会出现这样的错误:

    希望这会对你有所帮助。

    【讨论】:

    • 对不起,我忘了补充说它是寡妇虚拟机。也许我会检查虚拟机是否已经拥有证书。感谢您的帮助。
    • 我刚刚检查了证书是否已经存在于虚拟机上,但它不存在。
    • 这是真的吗?我做了测试,两次添加相同的证书时给出了同样的错误。看到答案,我已经更新了。
    • 您可以使用Azure REST API 获取VM 信息并进行检查。您可以在 osProfile 中看到它。
    • 我现在可以看到证书了。我有超过4个。非常感谢。我将在今天晚些时候再次运行这些脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2020-01-27
    • 2020-08-11
    • 1970-01-01
    • 2019-07-28
    • 2017-06-25
    相关资源
    最近更新 更多