HOWTO: 为 MSIX 创建自签名证书
MSIX 是一种 Windows 应用安装包的格式,它可以将我们的 Win32 或 UWP 甚至是绿色版软件打包成 MSIX 格式用于企业批量和自动化部署。另外从官方文档了解到 1.2019.1220.0 还支持将包含的服务转换为应用程序。这对于一些要部署国产小软件的企业来说是个好消息,未来 gOxiA 也将尝试去打包那些应用程序。
而今天我们要分享的是如何为 MSIX 创建自签名证书,因为 MSIX 生成后要发布给最终用户需要对 MSIX 进行签名,如果当前环境没有 CA 或无法生成所需的证书就需要创建自签名证书,否则无法应用 MSIX。
在创建自签名证书前,我们需要确定 MSIX 的 发布者信息,通常这些信息位于 AppxManifest.xml 文件中,其 Publisher 信息必须与证书中的主体相同。之后参考下面的命令行创建证书:
New-SelfSignedCertificate -Type Custom -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -KeyUsage DigitalSignature -FriendlyName "Your friendly name goes here" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
其中:
- -keyusage 表示证书的用途,对于自签名证书,应为 DigitalSignature
- -TextExtension 表示一些扩展设置,2.5.29.37={text}1.3.6.1.5.5.7.3.3,表示证书用于代码签名;2.5.29.19={text} 表示该证书非CA
接下来使用 PowerShell 查看证书信息:
Set-Location Cert:\CurrentUser\My
Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint
在确认了证书信息后,现在可以将证书导出为 pfx 格式,为此执行:
$password = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $password
现在我们拿到了 pfx 就可以用于 MSIX 签名,后续 gOxiA 也会积极分享 MSIX 相关的实践。
参考文档:
https://learn.microsoft.com/zh-cn/windows/msix/package/create-certificate-package-signing