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

使用AzureSignTool签名MSI成功但根证书不受信任的问题求助

解决Azure可信签名后证书不被信任的问题

问题概述

使用Azure Trusted Signing对Briefcase打包的MSI文件签名成功,但用户运行时仍提示“未验证发布者”,文件属性显示“证书链已处理,但终止于不受信任提供程序信任的根证书”,证书路径仅显示自身名称且带红叉。

排查与解决步骤

  • 确认证书类型与信任基础
    检查Azure Trusted Signing配置的证书是公共可信CA颁发还是私有CA颁发:

    • 若为私有CA证书:客户端系统默认不会信任私有根证书,必须将对应的根证书和中间证书导入客户端的“受信任的根证书颁发机构”存储中,可通过手动导入或组策略批量部署。
    • 若为公共CA证书:确认该CA的根证书是否在客户端系统的默认信任列表中,若不在可能是根证书过期或被吊销,需在Azure仪表板中核实证书的有效性状态。
  • 验证证书链完整性
    使用Windows自带的signtool工具执行以下命令,查看签名的证书链详细信息:

    signtool verify /pa /v "C:\Users\corre\EyePrecisionBasic\eyeprecisionbasic\dist\Eye Precision Basic-1.0.4.msi"
    

    若输出显示缺少中间证书,需:

    1. 在Azure Trusted Signing的证书配置文件中,确保已上传完整的证书链(根证书+中间证书);
    2. 重新签名时,给AzureSignTool添加-ac参数指定中间证书文件路径,确保签名时嵌入完整证书链。
  • 检查客户端根证书信任状态
    在出现警告的客户端机器上,打开certmgr.msc:

    1. 展开“受信任的根证书颁发机构”→“证书”;
    2. 查找Azure Trusted Signing使用的根证书,若不存在则手动导入该根证书;
    3. 导入后重新查看MSI文件的数字签名,确认证书链是否正常显示。
  • 优化签名命令参数
    确保AzureSignTool签名命令包含以下关键参数:

    • -pa:指定使用代码签名的增强密钥用法,符合Windows系统的代码签名信任要求;
    • 有效的公共时间戳服务器(如-ts http://timestamp.digicert.com),确保时间戳的证书链也被客户端信任。

内容的提问来源于stack exchange,提问作者Robbie Correll

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:18:15