代码签名错误:身份“iPhone开发者”与默认密钥链中的任何有效证书/私钥对不匹配。

77

如何解决这个XCode错误

代码签名错误:'iPhone Developer' 标识与默认密钥链中的任何有效证书/私钥对不匹配


4
你之前是否曾经签名过应用程序,还是这是你第一次遇到这个错误?仅仅重复标题作为问题可能不会激发人们想要帮助你的兴趣。 - deanWombourne
这些都不起作用... 有什么想法吗? - Rabskatran
它可以工作,请阅读下面的注释以获取答案。 - Pinky
这让我抓狂了,因为这些都不起作用。我正在运行xCode 4.1,并升级到4.2,但错误没有改变。 - Phill Pafford
采纳的答案并不是唯一的原因。对我来说,真正的答案是代码签名身份。(请查看所有答案) - Warren P
显示剩余2条评论
12个回答

63

如果您忘记将构建设置更改为模拟器,则会发生这种情况。 除非您想要构建到设备上,在这种情况下您应该查看其他答案。


它运行良好,但是要将应用程序上传到App Store,我们必须选择“构建存档”,这时我遇到了上述错误,请帮助我。 - Vineesh TP
尝试重新构建所有钥匙串证书。听起来你缺少了非常重要的密钥。 - sudo rm -rf
“重建钥匙串”搜索结果如此之多!@sudorm-rf,您能否添加一种重建钥匙串证书并将构建设置为模拟器的方法? - Danny
1
@Danny:哦,好久没遇到那些代码签名问题了。我觉得你最好在一个新的问题中问一下。 - sudo rm -rf

53

我在两天后找到了解决方案......XCODE 4.0

我刚刚升级到XCode 4.0,这个代码签名问题一直是一个令人烦恼的问题。我已经做了一年多不同版本的尝试,所以如果你也遇到了问题,你并不孤单。

我重新认证、重建、拖放、手动编辑项目文件、删除PROVISIIONING路径、停止/启动XCODE、停止/启动钥匙串、检查拼写、检查包ID、检查我的出生证明、月相,并教我的狗摩尔斯电码......但没有任何效果!!!

--底线---

  1. 进入目标... 构建设置 选项卡
  2. 进入代码签名标识 区块
    • 检查调试(Debug)发布(Distribution)是否具有相同的代码签名信息 ..在我的情况下是“IPhone Distribution:”,不要让DEBUG为空或未填写。

如果调试模式不同,则发布模式也会失败......希望这可以帮助别人...

图示:这显示了如何在XCode 4.5中找到相关设置。

图像描述


3
"Targets" 这个东西在哪里?我也有同样的问题,但是找不到可以修改的 "targets"。 - Brian Knoblauch
CodeSign错误:在SDK“iOS 6.0”中,产品类型为“应用程序”的代码签名是必需的。 - Steve Tauber
如果您更改此内容并出现有关需要代码签名的错误,则解决方案如下:https://dev59.com/H2kw5IYBdhLWcg3wbqAS - Steve Tauber
感谢您的回答。我贡献了一张图片,希望它能够帮助其他人避免像我一样尖叫和嚷嚷。转到构建设置,将"Code Signing"键入搜索框中,这样就更容易找到设置的这一部分了。 - Warren P
也在 XCode 4.6.2 中工作过。谢谢! - haa
对于那些找不到此对话框的人...在左侧的项目导航器中单击主项目(显示项目文件结构的位置)。这将在右侧显示项目设置。 - Mattygabe

13

检查你是否在构建设备而不是模拟器。进入 Xcode 菜单 "项目" -> "设置激活的 SDK",将其从 "设备" 改为 "模拟器"。

在 Xcode 4.1 下, 检查项目和目标的构建设置。对于每个设置,在 "代码签名" 下检查 "代码签名标识" 并改为 "不进行代码签名"。


这对我很有帮助(Xcode 4.6)。在我的情况下,我认为这是因为我们有多个开发人员参与了 git 并将整个工作区包含在仓库中(我已经将 project.xcworkspace/xcuserdata/ 添加到了 .gitignore 文件中)。 - Pierre de LESPINAY
+1,对于Xcode 4.6.1:产品>目标> x模拟器 - danwild

12

我有同样的问题。对于 iPhone 开发,我非常新手,并且这是我第一次尝试将我的程序加载到 iPhone 上。提示信息是正确的,您需要在钥匙串中创建一个证书。最好的步骤说明在这里:

http://developer.apple.com/ios/manage/overview/index.action

当然,您需要拥有开发者帐户(需要支付每年 100 美元的费用)。

希望这能帮到您。


链接对我来说工作正常。不过它会重定向到https网址。我听说苹果的网站有问题,你可以再试一次吗? - C0D3
啊,可能是因为我还没有付费账户。 - ashes999

7
我遇到了同样的问题。我对iPhone开发非常陌生,这是我第一次尝试将我的应用程序提交到App Store...
请检查以下内容:
1. 检查当前"Bundle Identifier"与"Code Signing Identity"中当前"Provisioning Profile"的名称是否相同。
2. 在"Code Signing identity block"中-检查Debug和Distribution是否具有相同的"Code Signing Information"。尝试在所有区块中保持"Code Signing Information"相同。
3. 尝试重新下载"Provisioning Profile"并双击该文件。然后在你的"Code Signing Identity"中使用新下载的配置文件。
4. 从developer.apple.com上再次下载证书,并双击该证书。(在我的情况下起作用)
然后清理项目并单击"Build for Archive"。
希望您的代码能够成功存档。

6

当我忘记更改公司名称以匹配我的公司时,通常会发生这种情况。

  1. 在“组和文件”下选择目标
  2. 点击“获取信息”按钮
  3. 选择“属性”选项卡
  4. 在标识符下,确保它说的是com.YOURREALCOMPANYNAME.APPNAME

当您创建一个新应用程序时,它通常会显示“com.yourcompany”。将其更改为您注册的任何内容,例如我的情况是com.DavidKanarek。


“你注册时使用的是什么” 这是指你用来注册的苹果ID吗? - Jonathan
您的分发配置文件应该在苹果的预配网站上显示为com.SOMETHING。 - David Kanarek

6
在 XCode 4.0 的主工作区中,在“停止按钮”右侧的左上角,有一个方案选择器,请单击它并将您的方案更改为 iPhone 模拟器。就这样。

5
当我遇到这个问题时,问题是我没有私钥来使开发者证书有效。
解决方案如下:
  1. 让创建证书的开发者导出与iOS开发者公钥匹配的私钥。参见http://developer.apple.com/ios/manage/certificates/team/howto.action
  2. 在您的机器上(使用KeyChain),打开此文件(Certificates.p12),并输入其他开发人员导出时使用的密码。它现在已被导入到您的KeyChain中。
  3. 现在连接iOS设备并重新构建以针对iOS设备进行定位。

4

2

如果您的证书无效,它将显示一个红色的"x"并说明原因。通常的原因是“该证书已过期”或“该证书由未知机构签发”。

要解决这个问题,您需要执行以下步骤:

  1. 如果您的证书已过期,请在iPhone门户网站上更新它,然后下载并双击它以将其添加到您的钥匙串中。
  2. 如果证书是“由未知机构签发”的,请从iPhone开发人员门户网站的证书部分下载“Apple Worldwide Developer Relations”证书,并双击它以将其添加到您的钥匙串中。
  3. 如果您的证书已被吊销,请从钥匙串中删除证书,然后按照iPhone开发人员计划门户网站用户指南中“获取您的iPhone开发证书”或“获取您的iPhone分发证书”部分生成新证书。
  4. 确保创建私钥的备份。如何操作请参考iPhone开发人员计划门户网站用户指南中“保存您的私钥并转移到其他系统”一节。
  5. 如果您拥有iPhone开发(或iPhone分发)证书及其关联的私钥,安装了苹果WWDR中间证书,并且您的证书有效,请确认在钥匙串访问器>首选项>证书中将在线证书状态协议(OCSP)和证书吊销列表(CRL)设置为“关闭”。
  6. 如果您仍然遇到问题,请联系支持苹果社区。

发现确认在Keychain Access > Preferences > Certificates中,Online Certificate Status Protocol (OCSP)和Certificate Revocation List (CRL)未被设置为“Off”。 - T.J.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接