跳到内容

设置

支持 macOS 和 Windows 代码签名。如果在您的 package.json 中正确提供了配置值,则应自动执行签名。

环境变量名 描述
CSC_LINK 证书(*.p12*.pfx 文件)的 HTTPS 链接(或 base64 编码数据,或 file:// 链接,或本地路径)。支持简写 ~/ (home 目录)。
CSC_KEY_PASSWORD 用于解密 CSC_LINK 中给出的证书的密码。
CSC_NAME 仅 macOS 证书名称(从 login.keychain 中检索)。如果您有多个身份(否则不要指定),则在开发机器(而非 CI)上很有用。
CSC_IDENTITY_AUTO_DISCOVERY truefalse。默认为 true — 在 macOS 开发机器上,将自动使用您钥匙串中有效且合适的身份。
CSC_KEYCHAIN 钥匙串名称。如果未指定 CSC_LINK,则使用此项。默认为系统默认钥匙串。

提示

如果您要将应用程序包装到安装程序 (pkg) 中,则需要在您的钥匙串中拥有 INSTALLER ID 身份,或者提供相应的 CSC_INSTALLER_LINKCSC_INSTALLER_KEY_PASSWORD

提示

如果您在 macOS 上构建 Windows,并且需要设置不同的证书和密码(而不是在 CSC_* 环境变量中设置的证书和密码),则可以使用 WIN_CSC_LINKWIN_CSC_KEY_PASSWORD

Travis、AppVeyor 和其他 CI 服务器

要在构建服务器上签名应用程序,您需要设置 CSC_LINKCSC_KEY_PASSWORD

  1. 导出证书。考虑不要在密码中使用特殊字符(对于 bash[1]),因为“当执行构建时,值不会被转义”。
  2. 将文件编码为 base64 (macOS: base64 -i yourFile.p12 -o envValue.txt, Linux: base64 yourFile.p12 > envValue.txt)。

或上传 *.p12 文件(例如,在 Google Drive 上,使用 direct link generator 获取正确的下载链接)。

  1. 设置 CSC_LINKCSC_KEY_PASSWORD 环境变量。请参阅 TravisAppVeyor 文档。建议在 CI 项目设置中设置,而不是在 .travis.yml/appveyor.yml 中设置。如果您使用文件链接(而不是 base64 编码数据),请确保相应地转义特殊字符(对于 bash[1])。

如果使用 AppVeyor,请不要忘记单击锁定图标以“切换变量加密”。

请记住,Windows 无法处理超过 8192 个字符的环境变量值,因此如果您的证书的 base64 表示形式超过该限制,请尝试重新导出证书,而不要包含证书路径中的所有证书(它们不是必需的,但证书管理器导出向导默认选中该选项),否则编码值将被截断。

[1] printf "%q\n" "<url>"

在哪里购买代码签名证书

请参阅 获取代码签名证书,用于 Windows(平台:“Microsoft Authenticode”)。请注意 — Gatekeeper 仅识别 Apple 数字证书

代码签名的替代方法

通过 Electron Builder 的配置(通过 package.json)进行代码签名不是签名应用程序的唯一方法。有些人发现使用 GUI 工具进行代码签名更容易。一些示例包括:- SSL manager - DigiCert utility for Windows 当然,对这些工具的任何全面讨论都超出了本文档的范围。