W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
代碼簽名是一種用來(lái)證明應(yīng)用是由你創(chuàng)建的一種安全技術(shù)。 您應(yīng)該對(duì)應(yīng)用程序進(jìn)行簽名,以便它不會(huì)觸發(fā)任何 操作系統(tǒng)安全檢查。
在 macOS 上,系統(tǒng)可以檢測(cè)對(duì)應(yīng)用的任何更改,無(wú)論更改是 意外引入還是由惡意代碼引入。
在Windows系統(tǒng)中,如果程序沒(méi)有代碼簽名證書,或者代碼簽名授信級(jí)別較低時(shí),系統(tǒng)同樣會(huì)將其列為可信程序,只是當(dāng)用戶運(yùn)行該應(yīng)用時(shí),系統(tǒng)會(huì)顯示安全提示。 信任級(jí)別隨著時(shí)間的推移構(gòu)建,因此最好盡早開(kāi)始代碼簽名。
即使開(kāi)發(fā)者可以發(fā)布一個(gè)未簽名的應(yīng)用程序,但是我們并不建議這樣做。 默認(rèn)情況下,Windows 和 macOS 都會(huì)禁止未簽名的應(yīng)用的下載或運(yùn)行。 從 macOS Catalina (10.15版本) 開(kāi)始,用戶需要操作很多個(gè)步驟來(lái)運(yùn)行一個(gè)未簽名的應(yīng)用。
如你所見(jiàn),用戶有兩個(gè)選擇:直接刪除應(yīng)用或者取消運(yùn)行。 你不會(huì)想讓用戶看見(jiàn)該對(duì)話框。
如果你正在開(kāi)發(fā)一款Electron應(yīng)用,并打算將其打包發(fā)布,那你就應(yīng)該為其添加代碼簽名。
正確準(zhǔn)備即將發(fā)布的 macOS 應(yīng)用程序需要完成兩個(gè)步驟。 首先, 應(yīng)用需要進(jìn)行代碼簽名。 然后,需要將該應(yīng)用程序上傳到Apple以進(jìn)行稱為 公證 的過(guò)程,其中自動(dòng)化系統(tǒng)將進(jìn)一步驗(yàn)證 您的應(yīng)用程序是否未采取任何危害其用戶的行為。
若要開(kāi)始,請(qǐng)確保你滿足簽名要求并認(rèn)證你的應(yīng)用:
Electron 的生態(tài)系統(tǒng)有利于配置和自由,所以有多種方法讓您的應(yīng)用程序簽名和公證。
如果你正在使用 Electron 最受歡迎的構(gòu)建工具,創(chuàng)建你的應(yīng)用程序簽名 并經(jīng)過(guò)公證僅需要對(duì)配置進(jìn)行一些添加即可。 Forge 是官方的 Electron 工具的 集合,在hood下使用 electron-packager
@electron/osx-sign
@electron/notarize
。
請(qǐng)參見(jiàn) Electron Forge 文檔中的 簽署 macOS 應(yīng)用程序 指南了解如何配置應(yīng)用程序詳細(xì)說(shuō)明。
如果你沒(méi)有使用像 Forge 這樣的集成構(gòu)建流,你可能會(huì)使用 electron-packager
,其中包括 @electron/osx-sign
和
@electron/notarize
。
如果您正在使用 Packager 的 API,您可以通過(guò)配置 來(lái)簽名并對(duì)您的應(yīng)用程序進(jìn)行公證
const packager = require('electron-packager')
packager({
dir: '/path/to/my/app',
osxSign: {},
osxNotarize: {
appleId: 'felix@felix.fun',
appleIdPassword: 'my-apple-id-password'
}
})
詳見(jiàn) Mac App Store 應(yīng)用程序提交指南。
在簽署Windows應(yīng)用程序前,你需要完成以下事項(xiàng):
您可以從許多經(jīng)銷商獲得代碼簽名證書。 價(jià)格各異,所以值得你花點(diǎn)時(shí)間去貨比三家。 常見(jiàn)經(jīng)銷商包括:
妥善保存您的證書密碼
您的證書密碼應(yīng)該被妥善保存。 不要公開(kāi)分享,或者提交到您的開(kāi)源代碼中。
Electron Forge 是簽署 Squirrel.Windows
和 WiX MSI
安裝程序的推薦方式。 Electron Forge 代碼簽名教程 中提供了有關(guān)如何配置應(yīng)用程序的詳細(xì)說(shuō)明。
electron-winstaller
可以為您的 Electron 程序創(chuàng)建 Squirrel.Windows 安裝器。 這也是 Electron Forge 的 Squirrel.Windows Maker 底層在使用的工具。 如果您不使用 Electron Forge 并想直接使用 electron-winstaller
,請(qǐng)通過(guò) certificateFile
和 certificatePassword
配置選項(xiàng)。
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)完整配置選項(xiàng),請(qǐng)查看 electron-winstaller
庫(kù)!
electron-wix-msi
是一個(gè)可以為您的 Electron 應(yīng)用程序生成 MSI 安裝程序的庫(kù)。 這是 Electron Forge 的 MSI Maker 底層使用的工具。
如果您沒(méi)有使用 Electron Forge,并且想要直接使用 electron-wix-msi
,請(qǐng)使用 certificateFile
和 certificatePassword
配置選項(xiàng) 或?qū)?shù)直接傳遞到 SignTool.exe 并帶有 signWithParams
選項(xiàng)。
import { MSICreator } from 'electron-wix-msi'
// 步驟1:實(shí)例化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)建一個(gè) .wxs 模板文件
const supportBinaries = await msiCreator.create()
// ?? 步驟 2a: 如果可以選擇對(duì)支持二進(jìn)制文件進(jìn)行簽名
// 將二進(jìn)制文件作為打包腳本的一部分進(jìn)行簽名
supportBinaries.forEach(async (binary) => {
// 二進(jìn)制文件是新的存根可執(zhí)行文件,可以選擇
// Squirrel 自動(dòng)更新程序。
await signFile(binary)
})
// 步驟 3:將模板編譯為.msi文件
await msiCreator.compile()
如需完整的配置選項(xiàng),請(qǐng)查看 electron-wix-msi 存儲(chǔ)庫(kù)!
Electron Builder 附帶一個(gè)自定義解決方案,用于簽署應(yīng)用程序。 你可以在這里找到 它的文檔
參考 Windows 商店指南。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: