如何使用mage.exe结合Azure可信代码签名服务重新签名清单
解决ClickOnce清单重签对接Azure可信代码签名的方案
方案1:使用SignTool对接Azure Key Vault(推荐)
mage.exe本身不支持云端证书,但可以先通过mage.exe生成修改部署URL后的未签名清单,再用支持Azure Key Vault的SignTool完成签名,步骤如下:
- 先用mage.exe处理部署URL并生成未签名清单:
mage.exe -Update YourApp.application -AppManifest YourApp.exe.manifest -ProviderUrl "新的部署URL" -Sign false - 用最新版SignTool(来自Windows SDK 10.0.22621及以上)调用Azure Key Vault签名清单:
signtool sign /fd SHA256 /a /kvc "你的Azure密钥库名称" /kyv "你的可信签名证书名称" /d "ClickOnce应用清单签名" /du "你的应用官网URL" "YourApp.exe.manifest" - 最后再用mage.exe确认签名并更新部署文件(可选,确保部署文件和清单签名匹配):
mage.exe -Update YourApp.application -AppManifest YourApp.exe.manifest -Sign false
方案2:调用Azure可信代码签名REST API手动签名
如果不想依赖SignTool,可直接调用Azure的代码签名服务API完成签名:
- 先通过mage.exe生成修改URL后的未签名清单文件
- 构造API请求,将清单文件上传至Azure可信代码签名服务,请求签名
- 下载签名后的清单文件,替换原文件
- 此方案完全基于云端操作,无需本地持有证书,符合Azure可信签名的设计理念,适合自动化脚本集成
方案3:临时导出证书(应急方案,不推荐)
若上述方案暂时无法落地,可临时将Azure可信签名证书导出到本地(需在Azure控制台操作,设置导出权限),然后给mage.exe使用:
mage.exe -Update YourApp.application -AppManifest YourApp.exe.manifest -ProviderUrl "新的部署URL" -CertFile "本地导出的证书.pfx" -Password "证书密码"
注意:此方案会失去证书云端存储的安全优势,使用后需立即删除本地证书文件,仅作为临时应急手段
内容的提问来源于stack exchange,提问作者Davy de Kerf
相关产品推荐
相关产品推荐

