用codesign -dvvv可查签名详情,authority显示签发者,timestamp为none即ad-hoc签名,teamidentifier需为10位有效;codesign --verify无输出表示签名有效;xattr或spctl可验apple公证,ticket=1或spctl输出accepted才真正安全。

你需要确认某个Mac应用或可执行文件是否经过合法数字签名、由谁签发、是否被篡改,避免运行来源不明或已被破坏的程序——这直接关系到系统安全与Gatekeeper拦截行为。
用终端命令查看文件签名详情
这是最权威、最底层的方式,能读取签名证书链、权限要求、时间戳等完整元数据。
打开“终端”应用(可通过聚焦搜索输入“终端”并回车)。
输入以下命令,将/Applications/Safari.app替换为你想检查的实际路径:
codesign -dvvv "/Applications/Safari.app"
若文件路径含空格或特殊字符,【必须用英文双引号包裹整个路径】,否则命令会报错或只检查路径第一段。
输出中重点关注三处:
• Authority字段:显示签发者,如Apple Mac OS Application Signing表示系统级签名;Developer ID Application: XXX表示第三方开发者签名。
• Timestamp:签名时间,若为none,说明是ad-hoc临时签名,无法律效力。
• TeamIdentifier:非空且长度为10位字母数字组合,才是有效苹果分配的团队ID。
快速判断签名是否有效且未被篡改
适用于批量筛查或验证报错应用,输出简洁,只返回关键状态。
在终端中执行:
codesign --verify --verbose=1 "/Applications/Zoom.us.app"
如果签名完整且文件未被修改,终端不输出任何内容,仅返回光标——这是成功的标志。
一旦出现类似code object is not signed at all、invalid signature或bundle format unrecognized的提示,说明该文件:【未签名、签名损坏、或包结构已被非法修改】,不应运行。
检查是否通过Apple公证(Notarization)
macOS 10.15+ 要求第三方应用必须公证才能绕过“已损坏”警告,签名有效 ≠ 公证有效。
方法一:查公证票证属性
执行:
xattr -pl com.apple.quarantine "/Applications/Slack.app"
若返回结果中包含ticket=1,说明系统曾成功获取并缓存过Apple公证信息;若无此字段或显示ticket=0,则未公证或公证失败。
方法二:用Gatekeeper策略评估
执行:
spctl --assess --type execute --verbose=4 "/Applications/Slack.app"
输出含accepted即表示签名与公证均通过;若为rejected,即使签名有效,Gatekeeper也会阻止启动。











