Electron应用在macOS Big Sur 11.7.6上公证失败问题求助
macOS Big Sur 11.7.6下Electron应用公证后仍提示“身份不明开发者”的排查方案
问题背景
基于Electron v30.3.1开发的桌面应用,已完成正规Apple公证流程,但在macOS Big Sur 11.7.6版本中用户仍收到**“无法打开,因为来自身份不明的开发者”**错误提示,该问题未在新版macOS(如Ventura及以上)中出现。
已尝试的无效方案
- 更新Electron至v33.0.0
- 使用Apple官方
notarytool工具手动提交公证 - 更新
@electron/notarize依赖至v2.5.0 - 调整electron-builder配置,添加应用所需权限声明
- 切换分发格式(DMG、ZIP)
- 更新所有构建相关依赖包
- 使用
xattr -c命令清理应用扩展属性
针对性排查与解决方向
1. 验证公证有效性与时间戳
Big Sur 11.7.6对公证时间戳的验证逻辑更严格,需确保公证时使用了Apple认可的时间戳服务器。执行以下命令检查应用公证状态:
spctl -a -v /path/to/your/application.app
重点确认输出中包含accepted状态,且时间戳相关信息无异常。
2. 检查代码签名完整性
确保应用内所有嵌套框架、辅助工具均完成正确签名,且签名身份与公证身份一致。执行命令查看签名细节:
codesign -dv --verbose=4 /path/to/your/application.app
检查Authority链是否完整,无中断或不匹配的情况。
3. 强化Hardened Runtime配置
Big Sur的Gatekeeper对Electron应用的Hardened Runtime配置要求更严格,在electron-builder配置中确保:
- 启用
hardenedRuntime: true - 添加必要的权限 entitlements,例如配置
entitlements和entitlementsInherit指向包含以下内容的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="1.0"> <dict> <key>com.apple.security.cs.allow-jit</key> <true/> <key>com.apple.security.cs.allow-unsigned-executable-memory</key> <true/> <key>com.apple.security.cs.disable-library-validation</key> <true/> </dict> </plist>
4. 等待公证服务器同步
Apple公证服务器在旧系统节点的同步可能存在延迟,使用notarytool重新提交公证后,等待至少24小时再分发应用,确保Big Sur的Gatekeeper服务器已同步公证记录。
5. 指导用户重置本地Gatekeeper缓存
让受影响的用户在终端执行以下命令,重置本地Gatekeeper规则后重试打开应用:
sudo spctl --reset-default
内容的提问来源于stack exchange,提问作者Michael Sizonenko
相关产品推荐
相关产品推荐

