公证日志解读
Apple 公证服务返回 Invalid 时,原因写在一份 JSON 日志里,每个文件、每种架构各一行。粘贴到这里,问题会按类归并、按修复顺序排好,每项附 Apple 的解释、修复方法和在 Mac 上检查的命令。如果是 Accepted,会给出针对你上传文件的装订和 Gatekeeper 检查命令。所有内容都不会上传。
解释依据 Apple 的“Resolving common notarization issues”。报错信息和日志字段已于 2026-10-31 用 Apple 公证服务返回的真实日志核对。
下载某次提交的日志:
xcrun notarytool log <submission-id> --keychain-profile "notary" notary-log.json
也可以把 .json 文件拖到这里
工作原理
- •读取 xcrun notarytool log 保存的日志,前面带着 notarytool 自己的输出也能读。如果只粘贴了 notarytool 打印的摘要,会给出下载完整日志的命令。
- •问题按类归并:同一个文件 arm64 和 x86_64 两份相同的报错合成一行,13 条问题读起来就是 4 件要修的事。
- •按修复顺序排列,避免修一个漏一个:先签名缺失或错误,再权限、强化运行时和时间戳。
- •会看问题之间的组合,比如把 Mac App Store 安装包拿去公证,或者公证了无法装订的 ZIP。
- •每条信息和字段都用 Apple 公证服务返回的真实日志核对过,包括 Apple 文章里没有列出的 “The binary is not signed.”。
它不做什么
- •它不连接 Apple。请用你自己的密钥或钥匙串配置,通过 notarytool 下载日志。
- •它看不到你的文件。检查命令在你的 Mac 上运行;日志里的路径都会加上引号。
- •不在 Apple 常见问题列表里的信息会原样显示,并附上日志给出的链接。
常见问题
- 怎么拿到公证日志?
- 运行 xcrun notarytool log <提交ID> --keychain-profile "<配置名>" notary-log.json(用 API 密钥则加 --key、--key-id、--issuer)。提交时会打印提交 ID,xcrun notarytool history 能列出以前的提交。
- “The signature does not include a secure timestamp” 是什么意思?
- 签名时没加 --timestamp,签名里没有 Apple 服务器签发的时间戳。在能连上 timestamp.apple.com 的情况下加 --timestamp 重新签名。用 Xcode 归档和导出时会带上。
- 为什么说我的应用没有用有效的 Developer ID 证书签名?
- 它是用别的证书签的,比如 Apple Development、Mac App Distribution,或者临时签名。只有 Developer ID Application(安装包用 Developer ID Installer)签名的才能公证。
- Mac App Store 应用需要公证吗?
- 不需要。公证用于在 Mac App Store 之外发布的软件。App Store 构建上传到 App Store Connect;把 App Store 安装包送去公证会报 Developer ID 错误。
- 票据能装订到 ZIP 上吗?
- 不能。Apple 说可以装订到应用、磁盘映像和扁平安装包上,不能装订到 ZIP 或单独的二进制文件。先装订应用,再重新打 ZIP。
- 公证要多久?
- Apple 说大多数软件 5 分钟内完成,98% 在 15 分钟内完成。