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

VB6生成的MSI提交微软商店因签名“弱”被拒,如何解决?

针对遗留VB6应用MSI提交微软商店弱签名问题的解决步骤

核心结论

近期确实有不少开发者使用第三方合规代码签名证书(支持SHA256)成功提交了包含VB6组件的MSI包到微软商店,关键在于全链路SHA256签名覆盖,包括微软自带的OCX文件。

具体操作指导

  • 重新签名所有二进制文件(含微软OCX)
    微软支持提到的MD5签名被淘汰是核心原因,即使是微软官方签名的OCX,如果其签名算法是MD5或SHA1,必须用你的SHA256证书重新签名。使用signtool.exe的命令格式如下:

    signtool sign /f "你的证书.pfx" /p "证书密码" /fd sha256 /tr http://timestamp.digicert.com /td sha256 "目标文件.exe/ocx"
    

    注意:必须指定/fd sha256明确签名算法,同时使用支持SHA256的时间戳服务器。

  • 重新封装MSI包
    所有组件重新签名后,需要重新生成MSI包,确保包内的所有二进制文件都是SHA256签名状态。如果使用旧版打包工具(比如InstallShield老版本),需确认工具支持SHA256签名的MSI输出,避免打包过程中破坏签名。

  • 验证签名完整性
    重新生成MSI后,除了用signtool verify验证MSI本身,还要提取MSI内的所有exe/ocx文件,单独验证每个文件的签名:

    signtool verify /pa /v "提取出的文件.exe/ocx"
    

    确保每个文件的签名算法都是SHA256,且时间戳有效。

  • 提交前的额外检查

    1. 确认你的代码签名证书是EV证书或普通代码签名证书(两者均支持,EV证书可能提交更顺畅),且证书链完整,可追溯到微软信任的根CA。
    2. VB6默认编译的exe支持SHA256重新签名,无需修改编译设置。

常见坑点规避

  • 不要跳过微软OCX的重新签名:即使这些文件原本有微软的签名,只要算法不符合SHA256要求,就会被判定为弱签名。
  • 时间戳必须使用SHA256算法:/td sha256参数不能省略,否则时间戳算法可能不达标。
  • 使用新版signtool.exe:建议用Windows 10 SDK或更高版本中的signtool,确保支持SHA256签名的完整特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:26:06