Azure证书分配至VM问题求助:无法添加Key Vault存储的证书
别着急,我帮你一步步解决把Azure Key Vault证书分配到VM失败的问题!先从最容易忽略的前置条件排查,再给你Portal和CLI两种操作方案,还有故障排查的技巧,应该能搞定。
先排查最容易踩坑的前置条件
这些是很多人失败的根源,先确认一遍:
- Key Vault必须和VM在同一Azure区域,跨区域的话证书根本没法推送
- 给VM的身份(系统分配或用户分配)在Key Vault的访问策略里必须有**证书获取(Get)和密钥获取(Get)**权限——因为证书底层关联了密钥,缺一个都不行
- 要分配的证书必须是PFX格式,而且不能设置密码——Azure VM的证书扩展不支持带密码的PFX文件
- VM的操作系统得是支持的版本:Windows Server 2012 R2及以上,Linux的话Ubuntu 16.04+、CentOS 7+、RHEL 7+这些主流发行版都可以
分步操作指南(Azure Portal 可视化版)
1. 给VM启用系统分配身份
- 打开你的VM在Azure Portal的详情页,切换到标识选项卡,选择系统分配标签
- 把状态改成开启,点击顶部的保存,等个1-2分钟让身份生效
2. 配置Key Vault的访问策略
- 打开目标Key Vault的详情页,切换到访问策略选项卡,点击添加访问策略
- 在密钥权限里勾选获取,在证书权限里也勾选获取
- 点击选择主体,在搜索框里输入你的VM名称(系统分配身份的名称就是VM本身的名字),选中后点击选择
- 回到访问策略页面,点击添加,然后再点击顶部的保存
3. 把证书分配到VM
- 回到VM的详情页,切换到证书选项卡,点击添加
- 在弹出的窗口里,选择你的Key Vault,然后从下拉列表里选要分配的证书
- 点击确定,等待1-2分钟,系统会自动部署证书扩展并推送证书
分步操作指南(Azure CLI 命令行版)
如果Portal操作一直失败,试试CLI,有时候命令行的反馈更清晰:
- 给VM启用系统分配身份:
az vm identity assign --name <你的VM名称> --resource-group <你的资源组名称>
- 获取VM身份的主体ID(后续配置权限要用):
az vm show --name <你的VM名称> --resource-group <你的资源组名称> --query "identity.principalId" -o tsv
- 给Key Vault添加访问策略:
az keyvault set-policy --name <你的Key Vault名称> --object-id <上面获取的主体ID> --certificate-permissions get --key-permissions get
- 推送证书到VM:
az vm secret add --name <你的VM名称> --resource-group <你的资源组名称> --vault-name <你的Key Vault名称> --secret <证书的名称或版本ID>
故障排查进阶技巧
如果还是失败,试试这些方法定位问题:
- 检查VM的扩展状态:转到VM的扩展选项卡,看看
AzureKeyVaultForWindows(Windows VM)或AzureKeyVaultForLinux(Linux VM)扩展有没有报错,点击扩展可以查看详细日志 - 查看Key Vault的操作日志:转到Key Vault的日志选项卡,搜索
GetCertificate操作,看看有没有权限拒绝(403)的记录——如果有,说明访问策略没配对 - 确认证书状态:在Key Vault的证书页面,确保证书是已启用状态,而且没有过期或被吊销
- 重启VM:有时候证书扩展部署卡住,重启VM后再尝试分配操作,大概率能解决
内容的提问来源于stack exchange,提问作者Jean-Pierre Carvalho
相关产品推荐
相关产品推荐

