macos - 在 Mac 上使用 codesign 实用程序时是否默认启用时间戳?
问题描述
我正在使用 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 签名。
我是否需要做任何特定的事情来确保启用时间戳?还是默认开启?
解决方案
默认情况下,Xcode 在构建过程中不包含安全时间戳作为应用程序代码签名的一部分。相反,它仅在存档(从 Xcode 10.2 开始)和导出工作流程期间添加安全时间戳。
您的签名表明您的情况是隐含的后一种情况。您可以在代码签名期间显式启用安全时间戳:
codesign --timestamp --sign <IDENTITY> --keychain <KEYCHAIN_PATH>
推荐阅读
- php - 408 HTTP 错误尝试使用负载均衡器访问 AWS 弹性 beanstalk 上的 https
- r - R 函数 set.seed() 或 kmeans 在 Power BI R 脚本中不起作用
- javascript - 提高使用 office-js 搜索 Microsoft Word 的性能
- javascript - Vue accessing an array within in an array
- javascript - 有没有办法在 JavaScript 中获得画布的自然偏移量?
- javascript - 通过javascript在通话期间流式传输音频文件
- java - Intellij idea插件开发中java中的文件加载
- spring-boot - @Secured 注解不适用于方法授权
- python - 使用Python进行redshift mysql迁移
- java - isReady() 在关闭状态下返回 true - 为什么?