Electron Builder 使用软证书签名
打包框架 electron_builder 如何配置签名参数
概要
签名操作支持 MacOS 和 Windows 系统,其中 Windows 默认使用SHA1 & SHA2 双签名。
在 MacOS 系统上,将自动使用 KeyChain 中的有效和适当的证书,MacOS 系统不仅要求对打包的应用程序进行开发者证书签名,还需要将应用程序提交公证,在线验证签名的应用程序是否符合规范。请参考 MacOS 公证
配置环境变量
名称 | 描述 |
---|---|
CSC_LINK | 指定(.pfx 、.p12) 证书路径,支持一下格式:https路径、base64编码数据、链接file://、本地路径 |
CSC_KEY_PASSWORD | 指定证书密码 |
CSC_NAME | 指定证书名称,仅限 macOS(用于从 login.keychain 检索) |
CSC_IDENTITY_AUTO_DISCOVERY | 表明是否自动查找签名证书,默认为true。在 macOS 开发环境中,将自动使用 keychain 中的有效和适当证书 |
CSC_KEYCHAIN | 钥匙串名称。 如果未指定 CSC_LINK 则使用, 则使用默认钥匙串 |
WIN_CSC_LINK | 代替 CSC_LINK, 当在 macOS 上构建 windows 时 |
WIN_CSC_KEY_PASSWORD | 代替CSC_KEY_PASSWORD, 当在 macOS 上构建 windows 时 |
Windows 平台
签名可用的代码签名证书分为 常规型 和 EV型。
两种证书都可以自动更新。 常规(通常更便宜)的代码签名证书签出的应用程序会在安装过程中显示警告,一旦有足够的用户安装了您的应用程序并且您建立了信任关系,该警告就会消失。
EV证书具有更高的信任度,因此可以立即工作而不会发出任何警告。 但是,由于它已绑定在物理USB中,无法导出。因此,无法导出用于在CI(例如AppVeyor)。
如果使用的是EV证书,则需要在 electron builder 配置中提供win.certificateSubjectName。
如果使用 Windows 7,请确保将 PowerShell 更新到版本3.0。
Travis, AppVeyor And Other CI Servers
签名之前,必须配置 CSC_LINK, CSC_KEY_PASSWORD.
1. 导出签名证书。构建不会对特殊字符进行转义,所有证书密码不能包含特殊字符。
2. 证书编码为 base64。
MacOS: base64 -i cert.p12 -o envValue.txt
Linux: base64 cert.p12 > envValue.txt
或者上传证书,例如 Google Drive,使用网络链接:
1. 设置CSC_LINK,CSC_KEY_PASSWORD, 建议设置在 CI 项目配置里。链接需要正确转义。
*在AppVeyor上,需要打开开关:【切换变量加密】*
购买代码签名证书
For Windows: 请参考 如何获取代码签名证书?
For macOS: Gatekeeper 仅识别苹果数字证书
MacOS 如何导出证书
1. 打开"KeyChain", 选择 "登录" 和 ”我的证书“ 类别。
2. "Developer ID Application": 签名开发者应用。
3. "3rd Party Mac Developer Application", "3rd Party Mac Developer Installer": 为发布到苹果应用商店的程序签名。
4. "Developer ID Application", "Developer ID Installer": 为应用程序和安装程序签名,分发到苹果应用商店以外。
5. "Mac Developer": 签名用于测试 苹果应用商店 提交的开发版本。
6. 在上下文菜单中,选择导出按钮
构建过程中如何禁用签名
保留其他变量不变,只需要 设置 CSC_IDENTIFY_AUTO_DISCOVERY 为 false:
export CSC_IDENTIFY_AUTO_DISCOVERY = false
或者 设置 mac.identify 为 null:
for CLI, -c.mac.identify=null