Electron-Builder 中如何排除特定文件进行代码签名
2025-05-16 19:28:41作者:柯茵沙
在基于 Electron 框架开发桌面应用程序时,代码签名是确保应用安全性和可信度的重要环节。Electron-Builder 作为流行的打包工具,默认会对所有可执行文件进行签名操作。然而,在某些特定场景下,开发者可能需要排除某些已经签名的第三方可执行文件,避免重复签名带来的潜在问题。
重复签名的潜在风险
当应用程序包含来自可信来源(如 Google 提供的 Android 命令行工具)的预签名可执行文件时,对其进行二次签名可能导致:
- 破坏原有的数字签名验证链
- 可能触发安全软件的误报
- 影响文件的完整性校验
解决方案:自定义签名配置
Electron-Builder 提供了灵活的配置选项,允许开发者通过自定义脚本精确控制签名行为。以下是实现方法:
- 创建自定义签名脚本(sign.js):
const path = require('path')
const { doSign } = require('app-builder-lib/out/codeSign/windowsCodeSign')
module.exports = async function sign(config, packager) {
if (!config.cscInfo) {
return
}
const excludedFiles = [
'etc1tool.exe',
'fastboot.exe',
'adb.exe',
'dmtracedump.exe',
'hprof-conv.exe',
'make_f2fs.exe',
'sqlite3.exe',
'make_f2fs_casefold.exe',
'mke2fs.exe'
]
if (excludedFiles.some(filename => config.path.endsWith(filename))) {
return
}
await doSign(config, packager)
}
- 在 electron-builder 配置文件中引用:
{
"win": {
"sign": "./sign.js"
}
}
最佳实践建议
-
必要签名文件:通常只需要对主应用程序可执行文件(如 myapp.exe)和安装程序进行签名。
-
签名验证:在排除文件前,建议使用 signtool 验证文件是否已包含有效签名:
signtool verify /v /pa yourfile.exe
-
安全考虑:只排除来自可信来源的预签名文件,对其他第三方可执行文件仍应保持签名。
-
文档记录:在项目文档中明确记录被排除签名的文件列表及其来源,便于后续维护。
技术原理
Electron-Builder 的签名过程通过调用 Windows 的 SignTool 工具实现。自定义签名脚本通过拦截签名请求,检查文件路径是否在排除列表中,从而实现对特定文件的签名排除。这种方法不会影响其他构建流程,仅修改签名行为。
通过这种定制化方案,开发者可以在保证应用程序整体安全性的同时,正确处理那些已经包含有效签名的第三方可执行文件。
登录后查看全文
热门项目推荐
相关项目推荐
暂无数据
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
540
3.77 K
Ascend Extension for PyTorch
Python
351
417
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
889
614
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
338
185
openJiuwen agent-studio提供零码、低码可视化开发和工作流编排,模型、知识库、插件等各资源管理能力
TSX
988
253
openGauss kernel ~ openGauss is an open source relational database management system
C++
169
233
暂无简介
Dart
778
193
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
115
141
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.35 K
758