跳到正文

← 全部工具

面向 Mac 开发者的免费工具

公证日志解读

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 分钟内完成。

相关工具