XCFrameworks手动签名

二进制框架的签名验证是 Xcode 15 中的一项新功能,它根据SDK 作者完成的代码签名为****应用程序开发人员提供安全性。

应用程序开发人员必须了解的知识

Xcode 15 会自动验证您的应用程序的依赖关系,并在检测到问题时向您发出警报,从而保护您的供应链完整性。

Xcode 现在在检查器中显示一个新部分,其中显示您在应用程序中包含的 xcframeworks 的签名状态。

此部分包含有关签名的信息,例如作者的身份。它将显示 xcframework 是否由以下人员签名

  • Apple 开发者计划身份
  • 自签名证书或
  • 目前尚未签署

Xcode 将在您第一次使用 xcframework 时记录身份,并验证它在以后的构建过程中不会更改。

如果签名发生更改,您的应用程序的构建将失败并显示相应的错误消息。

signatureverificationfailed.png

选择错误会提供一条警报,解释开发人员的身份已更改,并显示预期身份与新版本中存在的身份的比较情况。

这一变化可能表明二进制框架已被破坏。这种改变可能是合法的。如有必要,请通过经过验证的公共渠道联系 SDK 作者进行澄清。

如果您不确定,请取消。这会将新版本移至 Xcode 中的垃圾箱。

confirmordiscardsignaturechange.png

文章:验证 XCFrameworks 的来源

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 证明的安全时间戳。

签名位于_CodeSignatureXCFramework 的目录中,并保护最终二进制框架内所有文件的完整性。

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Xcode 12 Beta 3发行说明 更新您的应用程序以使用新功能,并针对API更改测试您的应用程序。 总览 X...
    iCloudEnd阅读 2,565评论 0 0
  • 这一篇文章给大家介绍:Xcode 11 Beta 5,虽然是beta版本,但是在不久的将来必将来临,例如:Swif...
    Cooci_和谐学习_不急不躁阅读 10,300评论 6 18
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,917评论 2 59
  • 代码签名 什么是代码签名 代码签名是对可执行文件或脚本进行数字签名,用来确认软件的来源并保证在签名后未被修改或损坏...
    _涼城阅读 2,243评论 0 3
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,695评论 1 180