You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用codesign命令签名bundle时提示‘no identity found’的问题求助

解决codesign提示“no identity found”的问题

别着急,这种问题我碰过好多次,咱们一步步排查:

1. 先确认签名身份真的在钥匙串里且有效

打开「钥匙串访问」app,切换到「登录」钥匙串和「我的证书」分类,找到你的开发者证书:

  • 证书旁边要有展开的小三角,里面能看到对应的私钥,两者都不能有红色叉号(叉号代表私钥缺失或者证书无效)。
  • 也可以用命令行直接列出所有可用的代码签名身份,终端里运行:
    security find-identity -v -p codesigning
    
    这个命令会输出所有符合要求的签名身份,你要确保你在codesign命令里用的<ID>和这里的某一条完全匹配(不管是哈希值还是证书全称)。

2. 检查钥匙串的访问权限

有时候证书导入了,但codesign没有权限访问私钥:

  • 右键点击证书对应的私钥,选择「显示简介」,切换到「访问控制」标签。
  • 要么勾选「允许所有应用程序访问此项目」,要么把你运行命令的终端(比如Terminal/iTerm)添加到允许列表里,之后重新尝试签名命令。

3. 确认签名身份的格式没出错

你用的<ID>可以是两种格式:

  • 证书的常用名称:比如"Apple Development: Your Name (XXXXXX)"(注意名称里有空格的话,一定要用双引号括起来);
  • 证书的SHA-1哈希值:就是security find-identity输出里那串40位的十六进制字符(不需要引号)。
    不管用哪种,都要保证和命令行输出的内容完全一致,大小写、空格都不能错。

4. 验证证书本身的有效性

双击证书查看详情:

  • 确认「有效期」在当前时间范围内,过期的证书肯定用不了;
  • 切换到「信任」标签,确保「代码签名」选项设为「使用系统默认值」(一般默认就没问题,别乱改)。

5. 检查p12导入的正确性

你导入p12的时候要注意:

  • 输入的密码必须和导出p12时设置的一致;
  • 要导入到「登录」钥匙串(除非你是用root权限运行codesign,那才需要导入到「系统」钥匙串)。

举个实际的例子,如果security find-identity输出了这一行:

  1. ABC123DEF456GHI789JKL012MNOP345QRST678UVW "Apple Development: John Doe (XYZ123)"
    那你的codesign命令可以写成这两种形式的任意一种:
codesign -v --force --verify --deep --verbose --sign ABC123DEF456GHI789JKL012MNOP345QRST678UVW <MyApp.app>

或者

codesign -v --force --verify --deep --verbose --sign "Apple Development: John Doe (XYZ123)" <MyApp.app>

内容的提问来源于stack exchange,提问作者RuLoViC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:37:08