Xcode命令/ usr/bin/codesign失败,退出代码为1:errSecInternalComponent

Ale*_*ier 88 xcode certificate ios provisioning-profile

我正在尝试向我的Xcode添加新的配置文件,以测试设备上的应用程序.以下是我遵循的步骤:

  1. 删除了所有证书和配置文件

  2. 创建/添加IOS开发证书

  3. 在线添加我的IOS设备

  4. 创建IOS配置文件

  5. 添加IOS配置文件

  6. 清洁应用程序

  7. 构建然后运行应用程序

  8. 在构建设置中设置代码签名和配置配置文件

  9. 很多谷歌搜索>没有成功

这是我得到的错误:

CSSM_SignData returned: 800108E6
/Users/alexpelletier/Library/Developer/Xcode/DerivedData/MyExpense-efnqzvoqwngzcmazaotyalepiice/Build/Products/Debug-iphoneos/MyExpense.app:     errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

Moh*_*has 201

转到Keychain Access - >切换一旦锁定/解锁图标登录 - >保持解锁状态 - >这解决了我的问题

  • 在 MacOS Big Sur 11.6 上找不到锁定所有钥匙串选项 (19认同)
  • 这应该是公认的答案.比重新启动更加明智! (7认同)
  • 也为我工作。30 秒为 Android 构建一个 apk,为 iOS 构建一个应用程序...... 2 小时。 (4认同)
  • 令人难以置信的是,这种愚蠢的锁定和解锁功能会有所帮助!谢谢 (3认同)
  • @allenlinli 这里也一样。对我来说也有效的是:钥匙串访问 - >在左侧菜单上右键单击“登录” - >单击“更改钥匙串'登录'的设置...” - >设置为1分钟后锁定 - >等待一分钟并打开 xcode 然后它再次要求输入密码。 (2认同)

sig*_*brt 77

这似乎是代码签名机制中的一个错误,重启你的mac应该解决问题

  • 我不知道为什么这么多的downvotes,它帮助了我. (6认同)
  • 如果您正在等待破坏性较小的解决方案,请参见下面的Mohit Manhas的答案 (2认同)

cbr*_*ken 57

登录钥匙串被锁定时会发生这种情况.要解锁登录密钥链,请运行:

security unlock-keychain login.keychain
Run Code Online (Sandbox Code Playgroud)

然后再次尝试构建或代码签名操作.有问题的错误代码在Apple的文档中描述为内部错误,因此完全有可能在其他情况下也会发生这种情况.

  • 我们在 Jenkins 上遇到了类似的问题,除了上述命令中提到的问题之外,我们还必须将密码作为参数传递给命令,因此我们执行了“securityunlock-keychain -p $KeychainPassword <login-keychain>”,您可以在其中轻松地将 KeychainPaasword 安全地存储在 Jenkins 上。 (4认同)
  • 不幸的是,这个解决方案似乎完全是循环的:运行上述命令需要您输入密码,这在非交互式会话中显然是行不通的(如通过 CI 代理(如 Jenkins)执行此操作时)。 (2认同)
  • 我对你的这篇文章感激不尽。我花了几天时间试图找出“codesign”失败的原因,这是拯救我的神奇命令! (2认同)

Equ*_*ium 27

High Sierra/ 上有同样的问题Xcode 9.4.1,所有签名尝试都以errSecInternalComponent

    • 转到Keychain Access
    • 转到登录钥匙串
    • 选择"我的证书"类别
    • 找到您要签名的证书并展开它以查看密钥.
    • 双击该键
    • 转到"访问控制"选项卡.
    • 将密钥访问控制更新为"允许所有应用程序访问此项"

或者:

在mac终端上运行codesignign命令,并且"始终允许"/ usr/bin/codesign访问密钥

  1. 如果尝试从ssh/CI进行签名,您还需要运行

    security unlock-keychain login.keychain
    
    Run Code Online (Sandbox Code Playgroud)

    在尝试签署应用程序包之前

  • @JonMcClung打开钥匙串访问权限,转到登录钥匙串 - 我的证书.找到您要签名的证书,展开它以查看密钥.双击该键,您将看到"访问控制"选项卡.切换到允许存在 (2认同)
  • 来自CI的@KonradRudolph`security unlock-keychain -p <password> login.keychain`。 (2认同)

ife*_*goo 17

我遇到了同样的问题,我重新启动我的macOS,它的工作原理.

在中国,我们在开发者之间有一句话:

小问题,只需重启.大问题,应重新安装.

有时候,上面的说法会对你有很大的帮助!

  • 我们在美国说过 - "永不重启旧硬件" (7认同)
  • @ifeegoo 旧服务器在启动备份时可能会出现问题(也许操作系统自己更新了?也许有人破坏了启动脚本?)或者需要一些手动启动程序,没有人知道。在你尝试之前你无法知道。也许bios rom坏了。这只是在适当维护的环境中不应该成为问题的事情之一,但您在尝试之前实际上并不知道并且您宁愿不尝试。 (2认同)

jam*_*lin 6

如果它帮助其他人,我遇到了一个errSecInternalComponent错误,codesign因为我通过ssh会话运行它到我的macOS机器.从macOS机器本身的终端窗口运行相同的命令.

据推测这是因为codesign需要从登录钥匙串访问私钥.

从同一个会话中运行security unlock-keychain login.keychain(由cbracken的答案解释)也应该有效.