我正在使用 Apple Developer ID 证书签署应用程序包。我需要使用命令行工具进行签名,因为我们的构建是自动化的并从我们的工具链运行。 90% 的时间它可以用这个命令正常工作:
ws5:bin nick$ codesign -fs "Developer ID Application: <my name here>" MyApp.app
ws5:bin nick$ spctl --assess MyApp.app
ws5:bin nick$
注意:MyApp.app 不是我的真实应用名称,而且
<my name here>
不是实际值。因此,可能 10 次中就有 1 次间歇性地失败并出现此错误:
MyApp.app: The timestamp service is not available.
我已经通过
spctl --assess
验证了 .app 通过隔离机制并通过压缩它并下载签名文件——所以请不要说“你做错了,使用 Xcode”。我知道 Apple 并没有“正式”推荐使用 codesign
用于开发人员 ID 证书(根据 WWDC video),但我们需要将其用于自动化,因为我们的应用程序是 gcc 和 Qt 构建输出的奇怪组合。解决此错误的最佳策略是重试直到它再次起作用吗?我能想到的就这些。
最佳答案
我不能推荐 --timestamp=none 解决方法。如果您没有为您的签名加上时间戳,您的二进制文件将在证书到期时变为未签名/无效。至少如果你给你的签名加上时间戳,只要在证书仍然有效的情况下签署了二进制文件,验证就会通过。这不会对实际被撤销的证书打折扣,但应该为您提供保障,以防有人(可能是您)在证书到期后需要使用您的文件副本。
如果您没有互联网来为您的签名添加时间戳,您也可以完全禁用签名,直到您的连接恢复。
编辑:或者,假设您的连接已启动,但 Apple 的默认时间戳服务器不稳定,您可以选择提供自己的有效时间戳服务器。
关于macos - 在 Mac OS X 10.8 上使用 codesign 时出现错误 "The timestamp service is not available.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11712322/