macos - Codesign 说 "no identity found"但是身份在钥匙串(keychain)上

标签 macos certificate code-signing keychain

我正在将代码签名集成到我们的构建中,并创建了一个自定义钥匙串(keychain),该钥匙串(keychain)保存在源代码树中并用于对代码进行签名(在使用之前它已复制到 ~/Library/Keychains,因此它位于众所周知的位置)。

但是,在尝试签名时出现错误:

$ /usr/bin/codesign --sign='Mac Developer: John Doe (AA1AAA1AAA)' \
    --keychain=~/Library/Keychains/xxx.keychain \
    dist/64/gmake/release/bin/libmylib.dylib

Mac Developer: John Doe (AA1AAA1AAA): no identity found

然而:
$ security find-identity -p codesigning ~/Library/Keychains/xxx.keychain

Policy: Code Signing
  Matching identities
  1) 49F2FBE79899DF18A9638AC6B1302E2EB6E079AD "Mac Developer: John Doe (AA1AAA1AAA)"
     1 identities found

  Valid identities only
  1) 49F2FBE79899DF18A9638AC6B1302E2EB6E079AD "Mac Developer: John Doe (AA1AAA1AAA)"

所以我不明白为什么codesign无法找到身份。

任何人都可以提出解决方案吗?

请注意,我也尝试过使用身份的 SHA-1,结果相同。

最佳答案

一些 codesign 的错误信息不太清楚。这里的问题是 codesign 找不到钥匙串(keychain),这是由使用 --keychain=~/path 引起的。 .这被解释为单个参数,并且不执行波浪号扩展。如果您修改命令以使用单独的参数,它应该按预期工作:

codesign --sign 'Mac Developer: John Doe (AA1AAA1AAA)' \
    --keychain ~/Library/Keychains/xxx.keychain \
    dist/64/gmake/release/bin/libmylib.dylib

关于macos - Codesign 说 "no identity found"但是身份在钥匙串(keychain)上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19183552/

相关文章:

iOS - 可怕的代码签名错误(0xE8008016) - 推送通知

java - IntelliJ IDEA Buildtools 24.0.2 需要 Java 1.8 或更高版本。当前 JDK 版本是 1.7

certificate - 我可以使用自签名证书在测试环境中部署 microsoft bot

c++ - 如何在 MacOS 上的 NodeJS native 插件上创建 OpenGL 上下文?

c# - X509Certificate2Collection.Find() 方法,使用 FindByTimeValid 标准,不起作用

java - 如何使用 BouncyCaSTLe 进行 TLS?

certificate - 如何使用 .PFX 文件签署 JAR 文件

ios - 在 Xcode 中授予其他人访问我的开发团队的权限

c++ - 在 MacOSX Lion 上编译 gcc 4.6.1 C++0x 线程代码时出错

macos - 使用 Safari 组件显示网页的应用程序的内容权限?