使用Azure Trusted Signing时SignTool出现SignerSign()失败错误(0x80070032)
使用Azure Trusted Signing通过signtool签名MSI时出现SignerSign()失败错误(0x80070032)
我在Windows PowerShell中使用Azure Trusted Signing执行signtool签名MSI文件时遇到错误,已确认%ACS_DLIB%和%ACS_JSON%环境变量指向的文件存在且路径正确,执行的命令如下:
.\signtool sign /v /debug /fd SHA256 /tr "http://timestamp.acs.microsoft.com" /td SHA256 /dlib %ACS_DLIB% /dmdf %ACS_JSON% "<待签名文件>.msi"
命令输出的调试信息显示证书筛选后选中了正确的Azure Trusted Signing证书,但最终报错:
The following certificates were considered: Issued to: -- Issued by: -- Expires: Sat Apr 05 06:20:17 2025 SHA1 hash: some-hash0 Issued to: A Issued by: A Expires: Sun Mar 14 13:41:25 2123 SHA1 hash: some-hash1 After EKU filter, 1 certs were left. After expiry filter, 1 certs were left. The following certificate was selected: Issued to: -- Issued by: -- Expires: Sat Apr 05 06:20:17 2025 SHA1 hash: some-hash0 Done Adding Additional Store SignTool Error: An unexpected internal error has occurred. Error information: "Error: SignerSign() failed." (-2147024846/0x80070032)
已完成的排查步骤:
- 确认dlib和json配置文件路径正确,环境变量引用无误
- 查看事件查看器,无相关错误事件提供额外上下文
- 尝试修改MSI的发布者名称为Azure提供的所有相关名称,问题仍未解决
- 搜索错误码0x80070032未找到对应Azure Trusted Signing的相关解决方案,Azure官方提示仅针对UWP包(.appx/.msix等)的发布者名称匹配问题,不适用于MSI场景
可能的解决方向
- 检查signtool版本兼容性
确保使用Windows SDK最新版本中的signtool,Azure Trusted Signing对signtool版本有要求,旧版本可能存在兼容性问题。可通过以下命令查看版本:
.\signtool.exe version
建议更新至Windows 11 SDK或最新的Windows 10 SDK版本。
验证Azure Trusted Signing配置文件权限
确认%ACS_JSON%指向的配置文件(含Azure服务主体凭据)的权限设置:- 当前执行PowerShell的用户需对该文件有读取权限
- 避免将配置文件放在受UAC保护的目录(如C:\Program Files),可移至用户目录下重试
添加证书强制选择参数
虽然调试信息显示证书已被选中,但可尝试手动指定证书哈希强制选择目标证书,避免自动筛选的潜在问题:
.\signtool sign /v /debug /fd SHA256 /tr "http://timestamp.acs.microsoft.com" /td SHA256 /dlib %ACS_DLIB% /dmdf %ACS_JSON% /sha1 some-hash0 "<待签名文件>.msi"
将some-hash0替换为输出中选中的证书SHA1哈希值。
检查MSI文件完整性
使用msiexec /a "<待签名文件>.msi"尝试提取MSI,确认文件未损坏。若文件损坏,重新生成MSI后再尝试签名。排查执行环境
- 以管理员身份运行PowerShell执行签名命令
- 关闭可能拦截文件操作的安全软件(如杀毒软件、防火墙)后重试
内容的提问来源于stack exchange,提问作者A M
相关产品推荐
相关产品推荐

