xcode - codesign 总是通过终端给出没有发现身份的错误

标签 xcode terminal code-signing

我已经查看了已经存在的问题,但没有一个问题能够解决我的问题(比如重新创建证书)。我已经构建了一个应用程序,在该应用程序中我几乎没有可执行文件、文件夹和框架。每当我尝试做codesign -s "our identity" my.app总是找不到身份。有人可以给出一个逐步的过程。

codesign -s "Developer ID Application: Sai***** (123123123J)" out/Release/Sai.app
错误

Developer ID Application: Sai****** (123123123J): no identity found,


我尝试删除“开发者 ID 应用程序”和序列号,但一切都给出了相同的错误
在这些方面寻求帮助 lines

最佳答案

虽然我没有为苹果开发代码签名这样做,但我仍然认为我有一些有值(value)的东西可以帮助你调试这样的问题。不同之处在于我创建了自己的证书,而您从苹果获得了证书。

检查证书的信任度,它必须受信任才能进行代码签名(在钥匙串(keychain)访问中证书 View 信任部分的倒数第三个 yosemite 上)。请注意,对于您的代码签名证书应该在登录钥匙串(keychain)中,我需要它在系统钥匙串(keychain)中。

起初,证书对钥匙串(keychain)的代码签名并不为人所知,因为缺少扩展目的“代码签名”,如果您查看钥匙串(keychain)并双击证书,您可以找到它:

enter image description here

我解决了这个问题(您无法修复它,因为 Apple 向您提供了证书。扩展程序应该就在那里):

enter image description here

然后,在将证书从钥匙串(keychain)拖放到我的桌面后,我将证书添加到受信任的签名证书中,这创建了 ~/Desktop/gdb-cert.cer(请注意,您可以省略 -d 和 -r trustRoot:

$ sudo security add-trusted-cert -d -r trustRoot -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/gdb-cert.cer

这有点棘手,因为我被一些互联网帖子误导并且没有查看手册页。有人说你应该使用 add-trust ( https://llvm.org/svn/llvm-project/lldb/trunk/docs/code-signing.txt )。可怕的是命令成功了,但没有做它应该做的事情。

之后,我在受信任的证书中找到了新证书,如下所示:
$ security find-identity -p codesigning

Policy: Code Signing
  Matching identities
      1) E7419032D4..... "Mac Developer: FirstName LastName (K2Q869SWUE)"    (CSSMERR_TP_CERT_EXPIRED)
      2) ACD43B6... "gdb-cert"
  2 identities found

  Valid identities only
      1) ACD43... "gdb-cert"
  1 valid identities found

在我的情况下,苹果证书已过期,但我用来签署 gdb 的证书没有过期(好吧,我只是自己创建的)。另请注意,“security add-trusted-cert”(-p codeSign)和“security find-identity”命令(-p codesigning)的策略名称不同。然后我继续签署 gdb,我也总是得到:
$ codesign --sign gdb-cert.cer --keychain ~/Library/Keychains/login.keychain `which gdb`
  gdb-cert.cer: no identity found

因为我的印象是我必须将证书文件的文件名提供给 --sign 选项,但实际上这是我应该提供的证书的 CN,并且应该在信任库中。双击钥匙串(keychain)中的证书时,您可以在此处找到 CN:

enter image description here

或在“security find-identity -p codesigning”的上述输出中。然后我继续签名,我必须给它正确的 key 链。在您的情况下,这必须是 ~/Library/Keychains/login.keychain,在我的情况下是 System.keychain:
 codesign -s gdb-cert --keychain /Library/Keychains/System.keychain `which gdb` 

然后给了我一个工作的 gdb,它应该给你一个签名的应用程序。

关于xcode - codesign 总是通过终端给出没有发现身份的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16036571/

相关文章:

ios - 如何启动特定的 iOS 模拟器?

python - PyCharm 中 IPython 的奇怪 'print' 行为

C - 验证代码签名 - Windows API

ios - 如何在 Sprite Kit 中初始化所有场景?

swift - 无法在 View Controller 之间提取数据: Swift 3

用于“查找任何内容”的 Xcode 键盘快捷键

c++ - 如何使用 emscripten 和 cmake 项目生成位码(.bc 文件)?

terminal - 如何从命令行运行Visual Studio Code?

ios - 可执行文件在 Xcode 中使用无效权利进行签名

Eclipse 更新站点 - 如何对 jar 进行签名?