electron-mac应用代码签名及公证
electron-MAC版应用需要做代码签名才可以在mac上被信任打开,自macOS 10.15及以上系统应用程序必须经过签名以及公证,否则默认情况下无法直接运行,会弹出警告。
代码签名
1、Apple开发者账号
a.)、打开钥匙串 => 点击左上方状态栏钥匙串访问 => 证书助理 => 从证书颁发机构请求证书
注意:
第一栏填可用的电子邮箱 例如:XXX@gmail.com
第二栏输入有自己标识的名称(方便自己后期在钥匙串中快速辨识并找到)
第三栏不选择(不使用CA电子邮件地址)
第四栏选择:存储到磁盘
看到这个提示:表示成功
b.)、
打开苹果开发者网站 => 点击上方Account => Certificates,Identifiers & Profiles
Certificates+ => 选择Developer ID Application => Continue => 点击下载:Download Your Certificate(点击右侧Download => 下载到本地一个.cer文件 双击安装到本机电脑证书)
注意:
然后开始选择CSR文件,就是第一步导出的文件。
导入完毕之后,可以看到自己生成证书的信息。黄色箭头指向的信息为提示10.14.5以及以上系统需要去公证,公证的步骤下面说,最后点击下载即可:
下载下来的.cer文件双击自动添加至钥匙串中,在钥匙串中进行访问。
右击查看详情,设置信任为始终信任:
证书在钥匙串中已设置完毕,导出为p12文件:
导出路径牢记,后边设置环境变量会用到:
生成Identifiers 获取BundleId
Identifiers+ => 选择App IDs => Continue(Select a type选择app) => continue
注意:
Devices+ => continue
注意:cloose File 不用选择
2、配置环境变量
不配置环境变量,mac下electron无法获取本地证书,需要打开终端或者iterm2
输入:
- 输入 sudo vim ~/.bash_profile
- 输入 export CSC_LINK = ~/desktop/zs.p12 (路径填写自己刚才保存的.p12证书绝对地址)
- 按 esc 键,输入 :wq (保存并退出)
- 输入 source ~/.bash_profile (环境变量重载)
- 输入 env 查看环境变量配置结果:
注意:如果多次重载发现环境变量没有更新到列表中,可以先退出终端,再重新打开终端多次尝试即可。
公证(notarize)
1、说明
背景:MacOS 10.14.5 开始,所有“新”开发人员签名的App都需要进行公证(Notarization),否则将触发苹果的Gatekeeper,阻止用户安装你的App。这意味着,除了对 App 进行签名,还需要对其进行公证。如果你尝试启动应在 MacOS 10.14.5 上未经公证的App,则会看到以下的错误消息:
mac为了保证安全对除 App Store 以外的应用进行公证,以确保没有恶意代码。
如图所示:
官方文档给的方法是用xcode提交到苹果的公证处进行公证,但是这方法对于electron来说是不合理的,electron所做的是打包的时候就把一切问题解决了,所以,还是需要在打包的根源上寻找解决方法:
2、使用electron-notarize插件
1、安装 electron-notarize 插件
运行命令:npm i electron-notarize --save-dev
2、使用hardened runtime构建App
在 electron-builder mac配置选项中设置 “hardenedRuntime”: true;
3、设置正确权限
在public文件夹下新建名为 entitlemets.mac.plist 的文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version=