在Windows系统中,如果程序没有代码签名证书,或者代码签名授信级别较低时,系统同样会将其列为可信程序,只是当用户运行该应用时,系统会显示安全提示。
- 设置package.json的有关window打包的相关内容
"win": {
"icon": "build/icons/icon.ico",
"target": [
"nsis",
"zip"
],
"requestedExecutionLevel":"highestAvailable",
"verifyUpdateCodeSignature": false,
"signingHashAlgorithms": [
"sha1"
],
"signDlls": true,
"rfc3161TimeStampServer": "http://timestamp.comodoca.com/authenticode",
"certificateFile": "xxx.pfx",
"certificatePassword": "xxxxxx"
},
配置参数说明:
'verifyUpdateCodeSignature': 是否需要验证签名
-
'signingHashAlgorithms':代表加密的方式,一般分为'sha256'与'sha1'两种方式:
- sha1对应时间戳 http://timestamp.comodoca.com/authenticode
- sha256对应时间戳 http://timestamp.comodoca.com?td=sha256
'signDlls': dll文件是否签名
'rfc3161TimeStampServer':代表时间戳
'certificateFile':证书地址,必须是pfx格式
'certificatePassword': 证书的私钥密码
2.导出pfx格式的证书
windows的证书需要去有相关资质的商家进行购买,现在买的证书都是以签名狗(类似与银行的u盘)的方式进行发放,确保了安全性的问题。
(1)在插上签名狗的时候,会自动下载一个证书管理工具软件,在上面可以可以修改密码,即上面第一步certificatePassword参数的值。
(2)无法进行导出pfx证书,只能导出cer格式的不带私钥的证书。
问题:cer格式可以对已经打包完的exe进行签名,但在electron中对打包完的exe进行签名,会导致无法升级的问题,所以需要在打包的时候就将证书打进去。
解决方法:导出cer格式的证书,然后修改后缀名为pfx,如test.cer修改为test.pfx,放到项目的根目录下面,即第一步certificateFile参数的值。
- 打包配置
(1)在package.json文件中配置:
"build": "cross-env BUILD_TARGET=clean node .electron-vue/build.js && node .electron-vue/build.js && electron-builder"
。
(2)运行命令
npm run build
,生成打包后的程序及安装包文件。
4.打包后的exe,右键属性,查看数字签名