在准备Linux VM部署的SSL证书时,为什么“ az vm机密格式”命令失败?

时间:2019-01-23 22:15:42

标签: azure azure-web-sites azure-cli

我正在尝试按照提供的说明准备SSL证书,以部署到Azure上托管的Linux VM:

HTTPS access to Azure ubuntu Virtual Machine

第一行:

$secret=$(az keyvault secret list-versions --vault-name myVaultName --name myCertName --query "[?attributes.enabled].id" --output tsv)

执行正常,并且$ secret包含期望值。但是,当我执行第二行时:

$vm_secret=$(az vm secret format --secret "$secret")

我得到一个错误:

unable to find vault 'myVaultName' in current subscription.

我仔细检查了命令格式和参数,没有发现任何错误。怎么回事?

1 个答案:

答案 0 :(得分:1)

这是一个奇怪的事情。 CLI命令以前可以正常运行,但是现在它需要添加具有密钥库名称的参数--keyvault和具有资源组名称的-g,如下所示:

$vm_secret=$(az vm secret format --secret "$secret" -g groupName --keyvault keyvaultName)

或者只需将参数--keyvault与密钥库ID添加在一起:

$vm_secret=$(az vm secret format --secret "$secret" --keyvault keyvault_resourceId)

以便它可以正常工作而不会出现错误。

注意:如果使用几个月前创建的旧密钥库,则给出错误的CLI命令也可以在我的测试中使用。所以有点奇怪。而且我发现属性默认值有些不同。

编辑

我认为最好在Linux环境中运行CLI命令,Windows和Linux中的CLI rin有所不同,有可能导致错误。 Linux中的脚本如下所示:

az keyvault certificate create --vault-name keyvault_name --name cert_name --policy "$(az keyvault certificate get-default-policy)"

secret=$(az keyvault secret list-versions --vault-name keyvault_name --name cert_name --query "[?attributes.enabled].id" --output tsv)

vm_secret=$(az vm secret format --secrets "$secret" --resource-group group_name --keyvault keyvault_name)

az vm update -g charles -n azureUbuntu18 --set osProfile.secrets="$vm_secret"