Windows 应用 MSIX 打包证书全指南(自签名证书 & 正式发布)

3

在 Windows 平台上打包 Flutter / .NET / C++ 等应用为 MSIX 安装包时,常见的一个问题是:

安装时报错:无法验证此应用包的发布者证书 (0x800B010A)

原因就是 应用安装包必须用证书签名,而 Windows 默认只信任权威 CA 或 Microsoft Store 签发的证书。本文总结了从开发调试到正式发布的几种证书方案,并补充了如何查看和导出证书的步骤。


一、MSIX 的 Identity 与证书关系

AppxManifest.xmlmsix_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 文件。


三、查看证书

  1. 打开 证书管理器:按 Win + R → 输入 certmgr.msc → 回车。

  2. 导航到 个人 → 证书(或 CurrentUser\My)。

  3. 找到你生成的证书,双击可以查看证书详细信息,包括 CN、颁发者、有效期等。


四、导出证书

1. 导出带私钥的 .pfx(用于打包签名)

  1. 在证书管理器中右键 → 所有任务 → 导出

  2. 选择 是,导出私钥(用于 MSIX 包签名)。

  3. 设置密码(MSIX 配置中需要用到)。

  4. 保存为 .pfx 文件。

2. 导出公钥证书 .cer(用于安装到信任根)

  1. 同样右键 → 所有任务 → 导出

  2. 选择 不导出私钥,保存为 .cer 文件。

  3. .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 + 组策略分发根证书。