You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure Key Vault Managed HSM证书签名代码遇问题求助

解决Azure Managed HSM中EV证书代码签名的问题

先排查权限与配置问题(解决"Not Found"报错)

Managed HSM和普通Azure Key Vault的权限模型完全不同,仅分配Managed HSM Crypto User角色可能不够,需要确保以下几点:

  • 给服务主体/应用分配的角色范围必须覆盖目标Managed HSM实例(或具体的证书/密钥资源),而非仅资源组
  • 确保服务主体拥有密钥级的签名权限:Microsoft.KeyVault/managedHsm/keys/sign/action(代码签名本质是调用证书私钥签名)
  • 确保服务主体拥有证书读取权限:Microsoft.KeyVault/managedHsm/certificates/get/action(用于获取证书元数据)
  • 验证证书名称和HSM域名:Managed HSM的证书访问路径是https://<hsm-name>.managedhsm.azure.net/certificates/<cert-name>,注意域名是.managedhsm.azure.net而非普通AKV的.vault.azure.net,且证书名称区分大小写

替代AzureSignTool的可用方案

方案1:使用SignTool + Azure AD令牌

SignTool原生支持通过Azure AD令牌访问Managed HSM的证书,步骤如下:

  1. 获取针对Managed HSM的Azure AD访问令牌:
    az account get-access-token --resource "https://<your-hsm-name>.managedhsm.azure.net/" --query accessToken -o tsv
    
  2. 执行代码签名:
    signtool sign /fd SHA256 /a /f "https://<your-hsm-name>.managedhsm.azure.net/certificates/<cert-name>" /u "<获取到的访问令牌>" /t "http://timestamp.digicert.com" <待签名文件.exe>
    

方案2:Azure CLI密钥签名 + SignTool附加签名

直接调用Managed HSM的密钥进行哈希签名,再用SignTool完成标准代码签名格式封装:

  1. 下载证书公钥到本地证书存储(仅需公钥,私钥留在HSM):
    az keyvault certificate download --name <cert-name> --hsm-name <your-hsm-name> --file cert.pfx --password ""
    certutil -addstore MY cert.pfx
    
  2. 对文件哈希进行签名:
    az keyvault key sign --name <cert-name> --hsm-name <your-hsm-name> --algorithm RSASSA-PSS --digest SHA256 --input-file <待签名文件.exe> --output-file signature.bin
    
  3. 附加签名到文件:
    signtool sign /fd SHA256 /a /s MY /n "<证书主题名称>" /t "http://timestamp.digicert.com" /dg signature.bin <待签名文件.exe>
    

方案3:使用HashiCorp Vault(适用于已有Vault环境)

配置HashiCorp Vault将Azure Managed HSM作为密钥后端,利用Vault的代码签名插件完成签名,适合需要统一密钥管理的场景。

内容的提问来源于stack exchange,提问作者Niels Harremoes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 22:17:28