如何仅使用普通 Apple ID 帐户签署 dylib?(还没有开发者帐号)

use*_*460 2 macos mach-o dylib codesign ios

我有一个 dylib,为了让它能够在我的机器上运行,我必须在 xcode 上的目标设置中禁用库验证。是否可以在没有付费开发者帐户的情况下仅出于测试目的对其进行签名?任何有关如何执行此操作的链接或教程都会有很大帮助。

gai*_*ige 14

取决于您如何获取该库。

在 Xcode 中构建

如果在 Xcode 中构建,您应该能够启用签名并告诉它使用Team None所有项目窗格Sign to Run Locally中的内容。Signing and Capabilities

签署现有的 dylib

如果您不是在 Xcode 中构建它,并且想要对以其他方式构建或检索的二进制文件进行签名,则需要使用codesign,这可能非常复杂。

理论上,您可以使用任何已被授权进行代码签名的证书来运行协同设计,并且您可以使用自签名证书来创建该证书,但这是一个极大的痛苦,并且不一定会成功。

如果您已登录开发人员门户并允许 Xcode 为您管理签名标识,则 Xcode 应自动创建“Mac Developer”代码签名证书。

您可以使用以下方法验证您是否具有协同签名身份:

security find-identity -v -p codesigning
Run Code Online (Sandbox Code Playgroud)

这将列出所有有效的协同设计身份。

签名dylib是使用 codesign 命令的问题:

codesign --force --timestamp --sign <name of certificate> <binary you want to sign>
Run Code Online (Sandbox Code Playgroud)

使用自签名代码签名证书

注意:不推荐这样做,但它确实对我有用。

  1. 开始钥匙串访问
  2. 选择钥匙串访问 > 证书助手 > 创建证书...
  3. 将您的证书命名为易于输入的名称
  4. 将证书类型更改为代码签名
  5. 单击创建
  6. 阅读警告后单击“继续”
  7. 完成后单击“完成”(然后返回“钥匙串访问”)
  8. 在“钥匙串访问”中找到您新创建的证书,然后双击它以获取详细信息
  9. 单击信任旁边的披露三角形以显示信任偏好
  10. 将使用此证书时设置为始终信任

security现在,当您运行上述命令列出协同签名证书时,应该会显示您的自签名证书。如果是这样,您很可能没有将“始终信任”或证书类型设置为“代码签名”

此时,您已准备好执行代码签名命令,然后您可以使用以下命令进行验证:

codesign -vvvv <path to dylib>
Run Code Online (Sandbox Code Playgroud)