二进制框架的签名验证是 Xcode 15 中的一项新功能,它根据SDK 作者完成的代码签名为****应用程序开发人员提供安全性。
应用程序开发人员必须了解的知识
Xcode 15 会自动验证您的应用程序的依赖关系,并在检测到问题时向您发出警报,从而保护您的供应链完整性。
Xcode 现在在检查器中显示一个新部分,其中显示您在应用程序中包含的 xcframeworks 的签名状态。
此部分包含有关签名的信息,例如作者的身份。它将显示 xcframework 是否由以下人员签名
- Apple 开发者计划身份
- 自签名证书或
- 目前尚未签署
Xcode 将在您第一次使用 xcframework 时记录身份,并验证它在以后的构建过程中不会更改。
如果签名发生更改,您的应用程序的构建将失败并显示相应的错误消息。
![](https://img.haomeiwen.com/i1200369/fd21e12c688711fa.png)
选择错误会提供一条警报,解释开发人员的身份已更改,并显示预期身份与新版本中存在的身份的比较情况。
这一变化可能表明二进制框架已被破坏。这种改变可能是合法的。如有必要,请通过经过验证的公共渠道联系 SDK 作者进行澄清。
如果您不确定,请取消。这会将新版本移至 Xcode 中的垃圾箱。
![](https://img.haomeiwen.com/i1200369/e9cf1b3a4d008ca8.png)
SDK 作者必须了解的知识
强烈鼓励 SDK 作者签署他们的 XCFrameworks,但不强制这样做。
对于 SDK 作者来说,对 SDK 进行加密签名非常重要,因为它允许应用程序开发人员确认身份并保证代码在签名后不会被更改或篡改。
鼓励 SDK 作者使用其 Apple 开发者计划身份进行签名。对于不同的开发人员身份,Xcode 根据对签名所用身份的信任度提供不同级别的功能。
[图片上传失败...(image-2f1b07-1711698469074)]
使用该codesign
工具对您的二进制框架进行签名。下面的示例使用 Apple 开发者计划身份。
codesign --timestamp -v --sign "Apple Distribution: Truck to Table (UA527FUGW7)" BirdFeeder.xcframework
包含时间戳标志是为了确保签名包含 Apple 证明的安全时间戳。
签名位于_CodeSignature
XCFramework 的目录中,并保护最终二进制框架内所有文件的完整性。
SDK 作者负责与其 SDK 客户端共享此证书的指纹,以便应用程序开发人员可以验证 xcframework 是否由 SDK 作者签名。
- 查看签名
security find-identity -v
- 重新签名
对于已经签名过的framework,可以使用-f
参数强制重新签名,用新的签名覆盖掉以前的签名
codesign -f -s "证书名称" /path/to/your.framework
- 移除签名
codesign --remove-signature YourFramework.framework
- 验证签名
codesign --verify --verbose YourFramework.framework
网友评论