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

如何获取Code Signing证书并让旧版MSI安装包通过微软商店审核

旧版MSI安装包第三方代码签名指南(适配微软商店审核)

我发布这份指南是因为找不到详细说明如何使用第三方代码签名证书为旧版MSI安装包做签名以通过微软商店审核的资料。网上找到的示例大多基于Visual Studio,并不适用。作为一名业余维护免费VB6应用的个人开发者,我无法承担许多现有方法的成本和复杂度。以下方案的硬件成本约85美元,证书(有效期1年)成本约150美元。

本信息截至2024年3月有效。

1. 需要购买什么?

需购买代码签名证书,分为三类:个人验证(IV)、组织验证(OV)、扩展验证(EV)。个人开发者只能选择IV类型,EV类型价格更高且不针对个人发放,并非必需。

2. 在哪里购买?

需选择属于微软可信根计划的证书颁发机构(CA)。搜索相关关键词获取当前代码签名证书的详细信息及厂商列表,不同厂商价格差异较大,建议多对比。

3. 证书如何交付?

需购买(或已有)USB读卡器和有效SIM卡来安全存储证书,我直接从所选CA处购买了这些硬件。同时需购买IV或OV类型的代码签名证书。获取证书前需完成身份验证,我通过在线方式使用带照片的驾照和电脑摄像头完成了验证。随后按照CA的指引将签名证书安全下载到USB读卡器中,并被要求创建唯一PIN码来保护该硬件/软件令牌。

4. 代码签名需要什么软件?

需要signtool.exe,它是Microsoft Windows SDK的一部分,只需安装SDK中与代码签名相关的组件即可。

5. 如何为文件签名?

需在Windows 10及以上版本的电脑上操作,确保已安装signtool.exe,插入USB读卡器(我的情况是这样)。通过命令行或批处理文件运行signtool.exe,它会连接读卡器,随后提示输入PIN码,验证通过后即可用证书为文件签名。

6. 需要为哪些文件签名?

所有可执行文件(.exe、.dll、.ocx等)都必须单独用证书签名,包括MSI安装包中分发的Microsoft dll或ocx文件(部分旧版Microsoft文件使用的MD5算法已不符合要求)。

7. 需要哪些参数选项?

必须使用SHA256算法为每个可执行文件签名并添加时间戳,可通过一条命令为多个文件签名。

8. signtool.exe的参数格式是什么?

微软官网有完整参数说明,我使用的格式如下:

signtool.exe sign /n “Your Certificate Name” /t http://your.time.server/ /fd sha256 folder1/filenames folder2/filenames myapp.exe

9. 这些参数的含义是什么?

  • /n:指定证书上的完整名称
  • /t:使用指定时间服务器添加时间戳(请查阅CA文档获取时间服务器地址)
  • /fd:指定使用SHA256算法

之后跟随一个或多个文件名,用空格分隔,可使用通配符或明确文件名。我发现使用通配符时,signtool会自动跳过无需签名的文件。

10. 下一步该做什么?

使用已签名的文件通过现有工具构建MSI安装包。重要提示:MSI文件构建完成后,必须按照上述同样的方式为最终的MSI文件做代码签名。

11. 这样就完成了吗?

可以说是,也可以说不是。完成上述步骤后,MSI安装包即可上传,且应能通过微软商店的初始包验证。但我发现即使通过了包验证,提交应用审核时仍因智能屏幕警告(Smartscreen Warning)被拒。你需要使用Microsoft Edge从你的网站下载MSI安装包,若出现智能屏幕警告,点击右上角三点按钮,以网站所有者身份报告该文件安全。24小时后再次尝试下载,若未出现警告,即可将应用提交至微软商店审核。我多次重复此流程才最终成功。

整个过程耗时2个月,请保持耐心……


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:40:55