我正在尝试按照以下说明准备SSL证书,以便部署到Azure上托管的Linux VM:
HTTPS 访问 Azure ubuntu 虚拟机
第一行:
$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.
我已经仔细检查了命令格式和参数,没有发现任何问题。 这是怎么回事?
> 这是一件奇怪的事情。CLI 命令以前工作正常,但现在需要添加具有密钥保管库名称的参数--keyvault
和具有资源组名称的参数-g
,如下所示:
$vm_secret=$(az vm secret format --secret "$secret" -g groupName --keyvault keyvaultName)
或者只需添加带有密钥保管库 ID 的参数--keyvault
:
$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"