Electron 代碼簽名

2023-02-16 17:16 更新

代碼簽名是一種用來證明應(yīng)用是由你創(chuàng)建的一種安全技術(shù)。 您應(yīng)該對應(yīng)用程序進行簽名,以便它不會觸發(fā)任何 操作系統(tǒng)安全檢查。

在 macOS 上,系統(tǒng)可以檢測對應(yīng)用的任何更改,無論更改是 意外引入還是由惡意代碼引入。

在Windows系統(tǒng)中,如果程序沒有代碼簽名證書,或者代碼簽名授信級別較低時,系統(tǒng)同樣會將其列為可信程序,只是當用戶運行該應(yīng)用時,系統(tǒng)會顯示安全提示。 信任級別隨著時間的推移構(gòu)建,因此最好盡早開始代碼簽名。

即使開發(fā)者可以發(fā)布一個未簽名的應(yīng)用程序,但是我們并不建議這樣做。 默認情況下,Windows 和 macOS 都會禁止未簽名的應(yīng)用的下載或運行。 從 macOS Catalina (10.15版本) 開始,用戶需要操作很多個步驟來運行一個未簽名的應(yīng)用。


如你所見,用戶有兩個選擇:直接刪除應(yīng)用或者取消運行。 你不會想讓用戶看見該對話框。

如果你正在開發(fā)一款Electron應(yīng)用,并打算將其打包發(fā)布,那你就應(yīng)該為其添加代碼簽名。

簽名 & 認證 macOS 版本

正確準備即將發(fā)布的 macOS 應(yīng)用程序需要完成兩個步驟。 首先, 應(yīng)用需要進行代碼簽名。 然后,需要將該應(yīng)用程序上傳到Apple以進行稱為 公證 的過程,其中自動化系統(tǒng)將進一步驗證 您的應(yīng)用程序是否未采取任何危害其用戶的行為。

若要開始,請確保你滿足簽名要求并認證你的應(yīng)用:

  1. 加入 Apple Developer Program(需要繳納年費)
  2. 下載并安裝 Xcode - 這需要一臺運行 macOS 的計算機。
  3. 生成,下載,然后安裝簽名證書(signing certificates)

Electron 的生態(tài)系統(tǒng)有利于配置和自由,所以有多種方法讓您的應(yīng)用程序簽名和公證。

使用 Electron Forge

如果你正在使用 Electron 最受歡迎的構(gòu)建工具,創(chuàng)建你的應(yīng)用程序簽名 并經(jīng)過公證僅需要對配置進行一些添加即可。 Forge 是官方的 Electron 工具的 集合,在hood下使用 electron-packager  @electron/osx-sign  @electron/notarize 。

請參見 Electron Forge 文檔中的 簽署 macOS 應(yīng)用程序 指南了解如何配置應(yīng)用程序詳細說明。

使用 Electron Packager

如果你沒有使用像 Forge 這樣的集成構(gòu)建流,你可能會使用 electron-packager,其中包括 @electron/osx-sign 和  @electron/notarize 。

如果您正在使用 Packager 的 API,您可以通過配置 來簽名并對您的應(yīng)用程序進行公證

const packager = require('electron-packager')

packager({
  dir: '/path/to/my/app',
  osxSign: {},
  osxNotarize: {
    appleId: 'felix@felix.fun',
    appleIdPassword: 'my-apple-id-password'
  }
})

對 Mac 應(yīng)用商店應(yīng)用程序進行簽名?

詳見 Mac App Store 應(yīng)用程序提交指南。

簽署windows應(yīng)用程序?

在簽署Windows應(yīng)用程序前,你需要完成以下事項:

  1. 獲取一個 Windows 身份驗證碼簽名證書 (需要年度費用)
  2. 安裝 Visual Studio 以獲取簽名工具 (免費 社區(qū)版 已足夠)

您可以從許多經(jīng)銷商獲得代碼簽名證書。 價格各異,所以值得你花點時間去貨比三家。 常見經(jīng)銷商包括:

  • digicert
  • Sectigo
  • 也可以根據(jù)自身需求,選擇其它的簽名分銷商。 ??

妥善保存您的證書密碼

您的證書密碼應(yīng)該被妥善保存。 不要公開分享,或者提交到您的開源代碼中。

使用 Electron Forge

Electron Forge 是簽署 Squirrel.Windows 和 WiX MSI 安裝程序的推薦方式。 Electron Forge 代碼簽名教程 中提供了有關(guān)如何配置應(yīng)用程序的詳細說明。

使用 electron-winstaller (Squirrel.Windows)

electron-winstaller 可以為您的 Electron 程序創(chuàng)建 Squirrel.Windows 安裝器。 這也是 Electron Forge 的 Squirrel.Windows Maker 底層在使用的工具。 如果您不使用 Electron Forge 并想直接使用 electron-winstaller ,請通過 certificateFile 和 certificatePassword 配置選項。

const electronInstaller = require('electron-winstaller')
// NB: Use this syntax within an async function, Node does not have support for
//     top-level await as of Node 12.
try {
  await electronInstaller.createWindowsInstaller({
    appDirectory: '/tmp/build/my-app-64',
    outputDirectory: '/tmp/build/installer64',
    authors: 'My App Inc.',
    exe: 'myapp.exe',
    certificateFile: './cert.pfx',
    certificatePassword: 'this-is-a-secret',
  })
  console.log('It worked!')
} catch (e) {
  console.log(`No dice: ${e.message}`)
}

有關(guān)完整配置選項,請查看 electron-winstaller 庫!

使用 electron-wix-msi (WiX MSI)

electron-wix-msi 是一個可以為您的 Electron 應(yīng)用程序生成 MSI 安裝程序的庫。 這是 Electron Forge 的 MSI Maker 底層使用的工具。

如果您沒有使用 Electron Forge,并且想要直接使用 electron-wix-msi ,請使用 certificateFile 和 certificatePassword 配置選項 或?qū)?shù)直接傳遞到 SignTool.exe 并帶有 signWithParams 選項。

import { MSICreator } from 'electron-wix-msi'

// 步驟1:實例化MSICreator
const msiCreator = new MSICreator({
  appDirectory: '/path/to/built/app',
  description: 'My amazing Kitten simulator',
  exe: 'kittens',
  name: 'Kittens',
  manufacturer: 'Kitten Technologies',
  version: '1.1.2',
  outputDirectory: '/path/to/output/folder',
  certificateFile: './cert.pfx',
  certificatePassword: 'this-is-a-secret',
})

// Step 2: 創(chuàng)建一個 .wxs 模板文件
const supportBinaries = await msiCreator.create()
// ?? 步驟 2a: 如果可以選擇對支持二進制文件進行簽名 
// 將二進制文件作為打包腳本的一部分進行簽名
supportBinaries.forEach(async (binary) => {
  // 二進制文件是新的存根可執(zhí)行文件,可以選擇
  // Squirrel 自動更新程序。
  await signFile(binary)
})

// 步驟 3:將模板編譯為.msi文件
await msiCreator.compile()

如需完整的配置選項,請查看 electron-wix-msi 存儲庫!

使用 Electron Builder

Electron Builder 附帶一個自定義解決方案,用于簽署應(yīng)用程序。 你可以在這里找到 它的文檔

對 Windows 應(yīng)用商店應(yīng)用程序進行簽名

參考 Windows 商店指南。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號