如何仅使用普通的 apple id 帐户签署 dylib? (还没有开发者账号)

How can I sign a dylib using just a normal apple id account? (No developer account yet)

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

取决于您获取图书馆的方式。

建筑在Xcode

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

签署现有的 dylib

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

理论上您可以 运行 使用任何已被授权进行代码签名的证书进行代码签名,并且您可以使用自签名证书创建它,但这是一个极度痛苦的问题,而且不确定取得成功。

如果您已登录开发人员门户并允许 Xcode 为您管理签名标识,

Xcode 应该会自动创建一个 "Mac Developer" 代码签名证书。

您可以使用以下方式验证您是否具有代码签名身份:

security find-identity -v -p codesigning

这将列出所有有效的代码签名身份。

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

codesign --force --timestamp --sign <name of certificate> <binary you want to sign>

使用自签名代码签名证书

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

  1. 开始钥匙串访问
  2. 选择Keychain Access > Certificate Assistant > 创建证书...
  3. 为您的证书起一个容易输入的名字
  4. 证书类型更改为代码签名
  5. 单击创建
  6. 阅读警告后单击继续
  7. 完成后单击完成(并返回钥匙串访问)
  8. 在 Keychain Access 中找到您新创建的证书并双击它以获取详细信息
  9. 单击 Trust 旁边的显示三角形以显示信任首选项
  10. 使用此证书时设置为始终信任

现在,当您 运行 使用上述 security 命令列出协同签名证书时,您的自签名证书应该会出现。如果是,您很可能没有将 Always Trust 或证书类型设置为 Code Signing.

至此,您就可以执行代码签名命令了,接下来您可以使用以下方式进行验证:

codesign -vvvv <path to dylib>