Gatekeeper默认拦截非App Store应用,但通过签名验证、公证检查和用户授权三层机制动态放行:先验开发者签名有效性,再查Apple公证状态,最后匹配系统来源策略。
macos gatekeeper 会默认拦截非 app store 下载的应用,但不是简单“一刀切”拒绝——它通过签名验证、公证检查和用户授权三层机制动态判断是否允许运行。
Gatekeeper 的三重验证逻辑
当你双击一个从网页或邮件下载的 .app 文件时,Gatekeeper 会依次执行:
- 检查开发者签名:确认应用是否由 Apple 认证的开发者用有效证书签名;未签名则直接拦截
- 验证公证状态:即使有签名,也需通过 Apple 公证服务(Notarization)扫描恶意行为;未公证的已签名应用在 macOS 10.14.5+ 仍会被阻止
- 匹配来源策略:根据系统设置中“允许从以下位置下载的应用”选项(如仅 App Store、App Store 和被认可的开发者、或任何来源)决定是否放行
拦截后的常见提示与对应含义
系统弹出的提示并非错误,而是 Gatekeeper 正常工作的反馈:
- “无法打开‘XXX’,因为它来自身份不明的开发者” → 应用未签名或签名无效
- “已损坏” → 公证失败,或文件下载后被意外修改(如校验和不匹配)
- “已阻止使用 XXX,因为它来自未识别的开发者” → 应用已签名且公证,但当前系统策略不允许该开发者来源
用户可干预的放行方式
Gatekeeper 设计为“默认拦截、明确授权”,所有放行操作都需用户主动参与:
- 在“访达”中 Control + 点击 → “打开”,点击“打开”按钮,即对单个应用建立信任记录
- 前往 系统设置 → 隐私与安全性 → 安全性,找到对应提示旁的“仍要打开”按钮
- 终端执行 xattr -d com.apple.quarantine /路径/到.app 清除隔离属性(仅对已下载文件有效)
为什么不能跳过验证直接安装
Gatekeeper 不是安装程序,而是运行时防护。它不阻止你把 .app 拖进“应用程序”文件夹,只在首次启动时介入。这意味着:
- 文件可以完整复制过去,但双击时才会触发验证
- 即便绕过一次,后续更新版本仍需重新验证(签名或公证变更即视为新应用)
- 管理员密码输入环节是必须的,普通用户账户无权覆盖此安全决策



















