Mac平台打包签名
1.0 创建证书
钥匙串访问 -> 证书助理 -> 从证书机构请求证书
1.1 创建Mac发布证书
1.2 导入证书至钥匙串中,并导出.p12文件
1.3 创建Bundle Identifiers
2.0 配置环境变量
如果不配置环境变量的话,electron是无法获取到本地的证书的;
0.1> 打开系统默认终端,进入配置环境变量:
sudo vim ~/.bash_profile
0.2> 添加如下配置:
# .p12文件的位置
export CSC_LINK=~/work/ypshop.p12
# .p12文件的密码
export CSC_KEY_PASSWORD="12345"
0.3> 重载环境变量
source ~/.bash_profile
0.4> 验证,查看刚才的配置是否已出现在系统环境变量中:
env
注:若未配置成功,退出重启终端尝试
3.0 公证
从MacOS 10.14.5开始,App都要进行公证(Notarization),否则将触发苹果的Gatekeeper,阻止用户安装你的App。这意味着,除了对 App 进行签名,还需要对其进行公证。
公证是为了确保应用中没有恶意代码,苹果给的方法是用xcode提交到苹果的公证处进行公证,但是这种方法对于electron来说是不合理的,electron所做的是打包的时候就把一切问题解决了,所以,还是需要在打包的根源上寻找解决方法:
0.1> 安装electron-notarize对程序进行公证
npm i electron-notarize --save-dev
0.2> 创建文件 entitlements.mac.plist 和 notarize.js,并配置其路径及其它信息:
"afterSign": "scripts/notarize.js"
"mac": {
"hardenedRuntime" : true,
"identity":"77Q6F9P39T", // 证书的用户ID
"gatekeeperAssess": false,
"entitlements": "build/entitlements.mac.plist",
"entitlementsInherit": "build/entitlements.mac.plist"
},
electron-notarize会完成公证的所有工作:将App打包并上传到Apple的服务器,等待公证成功,然后给App加入公证信息。这些流程是异步发送的,构建过程会可能会耗时很久。
App应该在签名之后,打包成DMG之前进行公证。Electron-builder 有一个afterSign的钩子,通过执行notarize.js 文件。
0.3> 登录AppleID创建专用密码,并配置于 notarize.js 中
0.4> 打xcode,添加生产证书
注:如果公证过程中报错:electron you must first sign the relevant contracts online,说明apple账号下有协议尚未同意,登录苹果网站同意即可。
参考:https://oldj.net/blog/2019/12/29/electron-builder-sign-and-notarize-for-macos
https://www.cnblogs.com/mmykdbc/p/11468908.html