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