对软件开发者来说,将MSI/EXE应用程序上架到微软应用商店(Microsoft Store)是触达亿万用户的黄金通道。而在这一过程中,选择合适的代码签名证书对应用程序数字签名,则是必不可少的关键环节。本文基于微软官方文档,深入解析微软商店对数字签名的具体要求,系统梳理如何选择适用的代码签名证书,助力您的应用顺利通过审核并成功上架。
一、微软商店的硬性要求:为何必须代码签名?
微软官方明确规定,所有提交至Microsoft Store的MSI或EXE安装程序及其所有可移植可执行(PE)文件,必须使用由微软受信任根计划CA颁发的代码签名证书进行数字签名。这一要求是强制性的,不接受自签名证书或非信任CA颁发的证书。
这一政策的核心目的在于:
验证发布者身份:确保软件来源可信,防止恶意软件冒充合法应用。
保障代码完整性:签名可验证软件自签名后未被篡改,杜绝植入恶意代码风险。
提升用户体验:使用受信任证书签名的应用,在微软商店安装时不会出现 SmartScreen提示(UAC可能仍然会显示)。
未满足签名要求的应用将无法通过商店审核,直接导致提交失败。即使通过其他渠道分发,未签名或自签名的软件也会在用户端SmartScreen拦截,严重影响安装率和用户信任。
二、代码签名证书选型指南:哪些证书满足要求?
1、可信的证书颁发机构(CA)
微软推荐选择Sectigo、DigiCert或 GlobalSign等可信证书颁发机构(CA)颁发的代码签名证书,OV代码签名证书,EV代码签名证书均可。
2、代码签名证书类型
1)OV 代码签名证书(组织验证)——主流首选
OV 代码签名证书全球通用,完全满足微软商店信任链要求,支持对所有常规MSI/EXE应用程序以及PE文件数字签名。
适用场景:非常适合大多数桌面应用,支持对.exe, .msi, .dll,.ocx,.xpi和.cab等应用程序文件数字签名。
2)EV 代码签名证书(扩展验证)——高阶安全
EV 代码签名证书提供最高级别的身份验证,申请流程更严格,具有更高安全性与更广泛的应用。其同样满足微软商店信任链要求,支持对所有MSI/EXE应用程序以及PE文件数字签名,还可用于内核驱动签名与WHQL认证。
适用场景:涵盖OV证书所支持的全部应用程序数字签名场景,并可进一步用于内核驱动签名,以及WHQL认证中所需的 Microsoft Entra ID 全局管理员账户与Windows硬件开发人员计划注册。
小贴士:代码签名方式有传统物理UKey,也有远程代码签名服务,其可与主流CI/CD工具无缝集成,构建自动化签发流水线,具体申请操作指南可参阅《远程代码签名服务使用指南》。
三、选型决策指南与实操建议
综合以上内容,为您的MSI/EXE应用程序上架微软商店选择代码签名证书,可遵循以下决策流程:
1、明确首要条件:无论选择哪种证书,都必须确保其颁发机构(CA)入列微软受信任根计划。主流选择包括Sectigo、DigiCert、GlobalSign等。
2、评估特殊需求:如果您的应用是普通的桌面软件,无内核驱动,OV代码签名证书完全足够。如果您的项目涉及Windows内核驱动开发,则必须申请EV代码签名证书。
3、执行全量签名:获得证书后,务必对MSI或EXE安装程序及其内部所有可执行PE文件进行数字签名,确保没有遗漏,以满足微软的完整签名要求。
4、避坑核心铁律:拒绝自签名、拒绝非微软信任根 CA、必须用时间戳、安装程序及所有PE文件签名。