Windows 应用 MSIX 打包证书全指南(自签名证书 & 正式发布)
在 Windows 平台上打包 Flutter / .NET / C++ 等应用为 MSIX 安装包时,常见的一个问题是:
安装时报错:无法验证此应用包的发布者证书 (0x800B010A)
原因就是 应用安装包必须用证书签名,而 Windows 默认只信任权威 CA 或 Microsoft Store 签发的证书。本文总结了从开发调试到正式发布的几种证书方案,并补充了如何查看和导出证书的步骤。
一、MSIX 的 Identity 与证书关系
在 AppxManifest.xml 或 msix_config.yaml 中,有一个关键配置:
<Identity Name="com.oldwei.easycode"
Version="1.0.0.0"
Publisher="CN=oldwei"/>
Name:应用包唯一标识(类似包名)。
Version:应用版本号,格式
Major.Minor.Build.Revision。Publisher:发布者,必须和签名证书中的 CN 或完整组织信息完全一致。
如果签名证书里的 CN=oldwei,但配置写成 CN=其他名字,就会报错。
二、开发调试:生成自签名证书
在本地测试时,可以生成一个自签名证书(Self-signed certificate)。
方式 1:PowerShell 生成
New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=oldwei" -CertStoreLocation "Cert:\CurrentUser\My"
CN=oldwei→ 就是 Publisher 值。生成后可以在 证书管理器里查看和导出。
方式 2:Visual Studio 生成
Visual Studio 项目 → 属性 → 签名 → 创建测试证书,也会生成 .pfx 文件。
三、查看证书
打开 证书管理器:按
Win + R→ 输入certmgr.msc→ 回车。导航到 个人 → 证书(或
CurrentUser\My)。找到你生成的证书,双击可以查看证书详细信息,包括 CN、颁发者、有效期等。
四、导出证书
1. 导出带私钥的 .pfx(用于打包签名)
在证书管理器中右键 → 所有任务 → 导出。
选择 是,导出私钥(用于 MSIX 包签名)。
设置密码(MSIX 配置中需要用到)。
保存为
.pfx文件。
2. 导出公钥证书 .cer(用于安装到信任根)
同样右键 → 所有任务 → 导出。
选择 不导出私钥,保存为
.cer文件。该
.cer文件可以在其他电脑上双击安装到 受信任的根证书颁发机构,让 MSIX 包能正常安装。
五、配置 msix_config.yaml
msix_config:
display_name: EasyCode
identity_name: com.oldwei.easycode
publisher_display_name: oldwei
publisher: CN=oldwei
msix_version: 1.0.0.0
certificate_path: ./certs/easycode.pfx
certificate_password: 123456
安装证书到根证书存储(防止报“不受信任”错误)
手动:双击
.cer→ 安装 → 选择 本地计算机 → 存储在“受信任的根证书颁发机构”。PowerShell:
Import-Certificate -FilePath "C:\path\to\easycode.cer" -CertStoreLocation Cert:\LocalMachine\Root
注意要以 管理员身份运行 PowerShell。
六、正式发布给外部用户的证书方案
如果要给外部用户发布,不能只靠自签名证书,否则每个用户都要手动导入证书。
方案 1:Microsoft Store
在 Microsoft Partner Center 注册开发者账号。
上传 MSIX 包,微软会自动给应用签名。
用户从商店下载时无需担心证书问题。
方案 2:购买商业代码签名证书
从权威 CA 购买证书(DigiCert、Sectigo、GlobalSign 等)。
分为普通代码签名证书和 EV 证书(后者更权威,带 USB Key)。
价格:几百 ~ 一千多美元/年。
用证书签名后,用户安装不会提示证书不受信任。
方案 3:企业 CA(内部软件)
企业内部用自己的 CA 签发证书。
通过组策略 (GPO) 把 CA 根证书推送到所有员工电脑。
七、总结
开发调试:用自签名证书即可,但必须手动导入到根证书存储。
外部正式发布:
想省心 → 上架 Microsoft Store。
不上架 → 购买商业代码签名证书。
企业内部应用:用企业 CA + 组策略分发根证书。