我正在尝试向我的Xcode添加新的配置文件,以测试设备上的应用程序。以下是我遵循的步骤:
删除了所有证书和配置文件
创建/添加IOS开发证书
在线添加我的IOS设备
创建IOS配置文件
添加IOS配置文件
清洁应用
构建然后运行应用程序
在构建设置中设置代码签名和配置配置文件
很多谷歌搜索>没有成功
这是我得到的错误:
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
答案 0 :(得分:111)
打开钥匙串访问,然后在文件菜单中选择锁定所有钥匙串。
然后返回Xcode并清理并重建。它将再次提示您输入密码以解锁钥匙串。
在此之后,假设您没有其他编译问题,它将成功!
答案 1 :(得分:75)
这似乎是代码签名机制中的一个错误,重新启动你的mac应该解决问题
答案 2 :(得分:47)
登录钥匙串被锁定时会发生这种情况。要解锁登录密钥链,请运行:
security unlock-keychain login.keychain
然后再次尝试构建或代码签名操作。有问题的错误代码是described in Apple's docs作为内部错误,因此在其他情况下也会发生这种情况。
答案 3 :(得分:19)
在High Sierra
/ Xcode 9.4.1
上存在相同的问题,所有尝试签名的过程都以errSecInternalComponent
或者:
在Mac终端上运行codesign命令,并“始终允许” / usr / bin / codesign访问密钥
如果尝试从ssh / CI登录,则还需要运行
security unlock-keychain login.keychain
在尝试签署应用捆绑包之前
答案 4 :(得分:15)
我遇到了同样的问题,我重启了我的macOS,它运行起来。
在中国,我们在开发者之间有一句话:
小问题,只需重启。大问题,应该重新安装。
有时候,上述说法会对你有很大的帮助!
答案 5 :(得分:5)
万一它对其他人有帮助,我在errSecInternalComponent
上遇到了codesign
错误,因为我是通过与我的macOS计算机的ssh会话运行它的。从macOS机器本身的终端窗口运行相同的命令即可。
大概是因为codesign
需要从登录钥匙串访问私钥。
在同一会话中运行security unlock-keychain login.keychain
(如cbracken's answer所述)也应该起作用。
答案 6 :(得分:2)
我运行了security unlock-keychain login.keychain
,但我的登录密码无效。因此,我重新启动,然后再次运行Xcode,它开始工作了。运行命令也可以。奇怪的问题。
答案 7 :(得分:1)
只需使用mac终端尝试一次,但不能从ssh会话中尝试
security unlock-keychain login.keychain
然后在提示的对话框中选择“始终允许”。 然后,您可以在远程会话中使用xcodebuild。
答案 8 :(得分:1)
我遇到了同样的问题,发现问题出在应用程序的代码签名上。
Opened the developer account and accepted the updated agreement and it worked.
答案 9 :(得分:1)
如果尝试从ssh运行命令签名:
security unlock-keychain login.keychain
在尝试签名应用捆绑包之前
或通过用户界面
将密钥访问控制更新为“允许所有应用程序访问此项目”
感谢@Equilibrium和@Jon McClung
答案 10 :(得分:1)
如@Equilibrium在注释之一中指出的,如果您在命令行环境中。像詹金斯(我的情况)一样,您可能需要将密码传递到解决方案中提到的安全解锁命令。
所以不要使用,
security unlock-keychain login.keychain
使用:
security unlock-keychain -p <login-keychain-password> <path-to-login-keychain>
登录路径的钥匙串可以是 $ HOME / Library / Keychains / login.keychain (我的情况),也可以只是 login.keychain
答案 11 :(得分:1)
以上方法对我来说毫无用处。
我通过以下方式解决了问题
就是这样。希望对任何人有帮助。
答案 12 :(得分:0)
对于任何在jenkins和ssh中遇到此问题的人:
您极有可能未授予对钥匙串中私钥的访问权限,我尝试但不确定为什么所有这些都不起作用:
最终解决者:
1.ssh [用户] @ [jenkinsServerIP] -L 5900:localhost:5900,登录到jenkins服务器
2.open'vnc:// localhost'
如果您的詹金斯服务器允许此操作,它将启动一个远程屏幕...
然后打开keychain.app授予/ usr / bin / codesign对私钥的访问权限
祝你好运
答案 13 :(得分:0)
右键单击与钥匙串中与代码签名证书相关联的私钥,然后单击“允许所有应用程序”,而不是依靠为我修复的提示,因为构建是通过ssh进行的。
答案 14 :(得分:0)
我必须:
1)删除与项目关联的证书
2)返回Xcode并撤消应用程序证书
3)Xcode需要新的证书
4)锁定所有KeyChain
5)清理项目
6)重建
就是这样。希望对任何人有帮助。
答案 15 :(得分:0)
在我的情况下,BUCK试图为development
签署IPA,但是没有安装任何开发证书。将构建配置更改为release
(这是我需要的-为iTunes进行构建)为我修复了它。
答案 16 :(得分:0)
上述解决方案对我没有任何帮助。
让我满意的解决方案...
答案 17 :(得分:0)
就我而言,这解决了。
xcode -> preferences -> accounts -> select the account -> manage certificate -> (+) in bottom left -> Apple development
答案 18 :(得分:0)
如果有人遇到类似的问题,我只是想标注一下我所做的。就我而言,我的苹果开发和分发证书、密钥和配置文件是最新的。我的 iOS 代码构建在用户模式下工作没有任何问题,但是当代码构建以 root 权限(即 % sudo 或通过命令行使用 sudo 调用 Xcode 时)由于代码签名问题而无法工作。
因此,我将相应的工作证书和登录密钥复制到钥匙串工具中的系统位置。然后它开始工作,没有任何代码签名问题。
同样,我们可以从工作机器导出构建所需的证书、密钥,然后将它们导入到非工作机器的钥匙串工具中可能会解决问题。