如何修复iOS应用程序代码签名错误?

在过去的一周中,我一直试图解决这个困扰我的问题,并在长期努力的最后解决了这个问题。 这不是一个常见的解决方案。

您真的需要这篇文章进行修复吗?
也许。

因为在调查期间,我阅读了太多论坛(包括中文论坛,但没有阅读,只能看一下:)),文章,StackOverflow条目等,但是没有一个对我有帮助。 因此,我想为该问题创建一个修补程序编译

在开始之前,您可以在下面找到我的场景。

我有一个Cordova应用程序,并通过Cordova CLI生成了一个构建。 但这通常与本地ios应用程序构建没有什么不同。 实际上,直到MacOS和XCode更新,它都可以正常工作。

在Mojave和XCode 10更新之后,我无法在Jenkins上生成构建。 在下面的错误连续出现。 确切地说,这是与钥匙串和证书有关的问题。

.......... errSecInternalComponent 
Command /usr/bin/codesign failed with exit code 1

我们可以开始解决。 您应该知道那些常见的解决方案位于列表的开头。

常见解决方案1:检查有效证书

您应该检查钥匙串,以正确添加有效证书。 您可以通过“钥匙串访问”应用程序执行此操作,也可以通过终端执行以下命令。

 安全查找身份-vp代码签名 

您的证书必须在结果中。 如果不是,请删除证书,然后再次将其添加到钥匙串中。

常见解决方案2:锁定和解锁钥匙串

这里的另一个最常见的解决方案。 在终端中运行以下命令。 您应该添加自己的钥匙串名称和密码。

 安全锁-钥匙串临时钥匙串 
安全解锁钥匙串-pp @ ssw0rd临时钥匙串

在这种情况下,使用的钥匙串名称为“ temp”,其密码为“ p @ ssw0rd”。 另外,您可以在以下命令中找到钥匙串的完整路径,并且可以使用它代替钥匙串名称(temp)。

 安全列表钥匙串 

常见解决方案3:重启机器

可以看出它很有趣,但是大多数网站都强烈支持这种解决方案。 如果添加新证书,重新启动计算机可能会很有用。 您可以使用以下命令重新启动。

 须藤重启 

通用解决方案4:将“钥匙串密码”设置为分区列表

此解决方案解决了密码提示问题。 在某些情况下,codesign等待提示符下的钥匙串密码,但远程访问没有此功能。 因此,通常,代码签名过程无法成功完成。

 安全设置密钥分区列表-S apple-tool:,apple:,codesign:-s -kp @ ssw0rd /Users/ceyhunkeklik/Library/Keychains/temp.keychain-db 

您可以使用“通用解决方案1”中介绍的方法找到钥匙串的完整路径。

我的案例的解决方案:检查并删除重复的私钥

就我而言,临时钥匙串具有有效的证书及其私钥。 我不知道为什么,但是“系统”钥匙串有一个与我的有效证书有关的私钥。 我已经检查了所有钥匙串中的所有私钥,并从无关的钥匙串中删除了所有重复的钥匙。 另外,如果有的话,我也删除了所有过期的证书。

我猜这些重复是由于Mojave更新而出现的,但实际上我不知道为什么。

结论🙂

Interesting Posts