跳到内容

Windows

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

提示

Windows 采用双重代码签名(SHA1 & SHA256 哈希算法)。

要在 Windows 上签名应用程序,有两种类型的证书

  • EV 代码签名证书
  • 代码签名证书

两种证书都适用于自动更新。常规(且通常更便宜)的代码签名证书在安装期间显示警告,一旦足够多的用户安装了您的应用程序并且您建立了信任,警告就会消失。EV 证书具有更高的信任度,因此可以立即工作,没有任何警告。但是,无法导出 EV 证书,因为它绑定到物理 USB 加密狗。因此,您无法导出证书以在 CI(例如 AppVeyor)上签名代码。

如果您正在使用 EV 证书,则需要在您的 electron-builder 配置中提供 win.certificateSubjectName

如果您使用 Windows 7,请确保 PowerShell 已更新到 3.0 版本。

如果您在 Linux 或 Mac 上并且想要使用 EV 代码签名证书签名 Windows 应用程序,请使用 Unix 系统的指南

使用 Azure 可信签名 (beta)

Microsoft 本身提供名为 Azure 可信签名的代码签名服务,您可以使用它来代码签名您的应用程序。

如果您还没有 Azure 设置,并且只想使用其代码签名服务,请使用此快速入门指南设置 Azure “可信签名账户”。然后,在 Azure 中设置“应用程序注册”,按照步骤为其创建“密钥”,并将“可信签名证书配置文件签名者”角色分配给应用程序注册

要使用您的证书进行签名,您需要调整 electron-builder 的配置并设置用于身份验证的环境变量。环境变量由 Invoke-TrustedSigning 模块直接读取;它们不会被 electron-builder 解析或解决。

首先,要指示 electron-builder 利用 Azure 可信签名,您需要在您的 electron-builder 配置中设置属性 win.azureSignOptions。按照 Microsoft 的说明进行配置。

属性 描述
publisherName 这必须与您希望使用的证书的通用名称 (CN) 属性完全匹配。
endpoint 这对应于您在创建证书时选择的端点。
certificateProfileName 您的可信签名账户中的证书配置文件的名称。
codeSigningAccountName 这是可信签名账户的名称(请注意,它不是应用程序注册的账户名称)。

可以在 win.azureSignOptions 下提供其他字段,这些字段将直接传递到 Invoke-TrustedSigning powershell 模块。

其次,为构建操作提供适当的环境变量。每个变量的描述可以在 Azure.Identity 类 - EnvironmentCredential 类中找到。您只需要提供与您选择使用的身份验证方法对应的表中列出的环境变量。

提示

如果您使用上述使用“应用程序注册”的最小设置,“具有密钥的服务主体”部分适用于您。在这种情况下,您只需要租户 ID、客户端 ID 和客户端密钥。

环境变量名称 描述
AZURE_TENANT_ID 您的 Azure AD 租户 ID;可以在 Entra ID 门户中找到。
AZURE_CLIENT_ID 您的“应用程序注册”的应用程序(客户端)ID。请注意,这不是“对象”ID。
AZURE_CLIENT_SECRET 您为您的应用程序注册创建的“密钥”的值。请注意,这不是密钥的 ID。
AZURE_CLIENT_CERTIFICATE_PATH 如果您自带证书,则为必需项。
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN 如果您自带证书,则为必需项。
AZURE_USERNAME 您的 Microsoft Entra 账户的用户名。
AZURE_PASSWORD 您的 Microsoft Entra 账户的密码。