在 Mac 上使用 codesign 实用程序时是不是默认启用时间戳?

Posted

技术标签:

【中文标题】在 Mac 上使用 codesign 实用程序时是不是默认启用时间戳?【英文标题】:Is time stamping enabled by default when using codesign utility on a mac?在 Mac 上使用 codesign 实用程序时是否默认启用时间戳? 【发布时间】:2020-05-07 06:03:15 【问题描述】:

我正在使用 codesign 实用程序在 mac 上签署文件。命令是: codesign --sign <IDENTITY> --keychain <KEYCHAIN_PATH>

当我验证我的签名负载时,我看到以下字段:

Format=Mach-O thin (x86_64)
Hash type=sha256 size=32
CandidateCDHash sha256=
Hash choices=
CDHash=
Signature size=
Authority=Developer ID Application: <Signing Identity>
Authority=Developer ID Certification Authority
Authority=Apple Root CA
**Timestamp=May 6, 2020 at 1:39:04 AM**
Info.plist=
TeamIdentifier=
Sealed Resources=none

这是否意味着负载默认带有时间戳?我还阅读了 Apple 的技术说明,它在证书有效性下声明了以下内容:

默认情况下,开发者 ID 签名带有加密时间戳。具有加密时间戳的签名会根据签名时间进行验证,使用过期(在签名时)证书进行的签名是无效的。前面的讨论仍然适用于没有安全时间戳的开发者 ID 签名。

https://developer.apple.com/library/archive/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919-CH1-TNTAG7

我是否需要做任何特定的事情来确保启用时间戳?还是默认开启?

【问题讨论】:

【参考方案1】:

来自https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution/resolving_common_notarization_issues

默认情况下,Xcode 不包含安全时间戳作为 构建过程中应用程序的代码签名。相反,它添加了一个 仅在存档期间(从 Xcode 10.2 开始)和导出期间使用安全时间戳 工作流程。

您的签名表明您的情况是隐含的后一种情况。您可以在代码签名期间显式启用安全时间戳:

codesign --timestamp --sign <IDENTITY> --keychain <KEYCHAIN_PATH>

【讨论】:

谢谢。我已包含显式时间戳标志以将其包含在我的所有签名中。

以上是关于在 Mac 上使用 codesign 实用程序时是不是默认启用时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

MAC使用CodeSign查看已签名的文件的数字签名情况

Mac App Store应用签名和pkg签名(必须签名后才能销售)

mac app 的 codesign 插件

允许 codesign 使用我的钥匙串时遇到问题

Mac-codesign命令error: The specified item could not be found in the keychain

上传到 Mac App Store 时出错:ITMS-90239