Xcode无法在您的钥匙串中找到有效的私人证书/有效的密钥对以供此配置文件使用。

54
我在安装另一位开发者创建的配置文件时遇到了问题。
  1. 开发证书已经存在
  2. 我正在开发的应用程序与该证书关联有配置文件
  3. 我的设备UUID已被添加
  4. 该应用程序的AppID已经存在
  5. 开发配置文件已经存在,并且包含我的UUID
当我下载证书和配置文件时,组织者中出现了错误:Xcode - iPhone - profile doesn’t match any valid certificate-/private-key pair in the default keychain
Xcode could not find a valid private certificate/valid key-pair for this profile in your keychain

我该如何解决?


你已经在你的钥匙串中安装了证书吗? - Jamie
4
我双击了这个证书,它被放置在我的钥匙串中的“登录”区域。 - Sheehan Alam
1
(注释):这对我有用 - 只需双击 .mobileprovision 文件即可解决问题。 - DefenestrationDay
10个回答

64
您还需要使用申请证书时使用的私钥。 私钥用于签署您使用该开发者身份编译的每个设备二进制文件。您下载和导入的证书基本上只是对您的私钥的标记,表示“使用此密钥签署的代码允许在设备上运行”。 请让其他开发人员导出生成原始证书签名请求时使用的密钥,然后在您的计算机上导入它们。在拥有这两个文件之后,请查看Keychain以查看密钥是否与证书正确配对: 当一切都正确放置时,您应该在证书上看到一个小三角形,让您查看密钥(在密钥页面上相反,在密钥下面应该看到证书)。否则,关系不正确,在导入期间未被Keychain识别(在某些情况下,我曾经见过在导入更新的证书时仍然存在已过期的证书的Keychain)。 我最近试图将iOS开发者证书的公共/私有密钥对移动到另一台机器上。使用Keychain Access将公共文件导出为.pem格式,将私有文件导出为受密码保护的.p12格式。 在另一台机器上,Keychain Access无法导入它们。解决方案是老掉牙的命令行:
security import ios_priv.p12 -k ~/Library/Keychains/login.keychain 
security import ios_pub.pem -k ~/Library/Keychains/login.keychain
如果您在转移证书密钥时遇到问题,请尝试以下方法。
编辑以回复@baudot下面的评论。(因为不能适应评论框)

确保您的钥匙串中还有苹果开发者关系根CA证书。这是用于验证证书的。

您也可以选择重新开始。只需从钥匙串中删除密钥和证书,在ADC门户网站上吊销它们,并删除其相关联的预配配置文件。

一旦您删除了所有内容,就可以生成新的密钥对和相关的证书签名请求。然后确保导出密钥并将它们放在一个好的地方以备将来使用。

然后您转到ADC门户网站,上传您的新证书签名请求,生成新的预配配置文件,然后您就可以开始了。

唯一不可替代的是您的ADC帐户。其他所有东西都可以恢复或重新创建。

我还建议您使用Xcode中的新型自动预配功能。这样可以省去下载和导入预配配置文件的麻烦。它只会将您现有的预配配置文件与ADC进行同步。


我正在努力解决这个问题,查看了我的硬盘,发现我有不少于四个私钥,其中任何一个都可能是我最初用来签名的那个,而且所有这些私钥似乎都已经被 KeyChain Access 安装了。但仍然显示出现错误。 - baudot
2
上面的关键是“生成新的配置文件”。我发现“更新”无效。 - Chris Newman
我赞同重新开始!我尝试了很多方法,但只有重新开始后一切才变得顺畅。 - Ivan Andrus
非常好的回答,所有的困惑都消除了。特别是"编辑"部分。 - viral
这让我开始寻找其他解决方法。在遇到这个问题一段时间后,我最终从备份中打开了我的“DeveloperProfile.developerprofile”。一旦XCode在组织者中导入它,有效的密钥签名身份问题就消失了。 - Abhishek Mishra

22
这是因为我将配置文件拖放到Xcode Organizer的设备“Provisioning Profiles”部分,但没有拖放到Library的“Provisioning Profiles”部分。 当我也在那里放置它时,设备部分中的警告消失了。
希望这可以帮助任何人...

我解决问题的方法是删除并重新安装所有证书。 - user523234
也对我有用。谢谢Mathieu! - Johan Pelgrim
同样地,我刚刚去了XCode Organizer中的Library | Provisioning Profiles,勾选了自动配置,然后点击了刷新。 - jeffc666

5
当证书正常时,重新启动Xcode以帮助其找到它。

3
我有一个类似的问题。解决方法之一是从钥匙串中删除证书并请求新证书。苹果在这里提供了非常详细的步骤:technotes

1

我在10.6,Xcode 4.2上也遇到了这个问题。尝试了很多其他方法后,最终我只是退出了Xcode并重新启动了它。然后错误消息就消失了。真是奇怪。


1

我只能通过使用 Xcode -> 组织者 -> 开发者资料 并在右侧窗格底部点击 导出 来解决这个问题。这将保存一个合并的 .developerprofile 文件,您可以在目标机器上打开/导入。

免责声明:这可能不是原始帖子的本意。然而,我无法成功地以其他方式在我的机器之间移动私有+公共+证书。


这对我有用,而且还包括了私钥。 - Ronnie Liew

1

我的证书过期后出现了这个问题,我确定密钥都是好的并且放在了正确的位置。我错过的步骤是删除Provisioning Portal中的配置文件并重新创建它们。不要相信那个“续订”链接——它看起来像一个很诱人的快捷方式,但对我来说根本不起作用!

因此,为了重新开始,你不仅需要从Keychain中删除密钥和证书,还需要清除Provisioning下的开发和分发选项卡中的内容。


0
如果您的旧 Mac 无法访问,但您有 SSH 访问权限(例如在遥远的办公室立方体中开机),那么有一个解决方案。您可以使用命令行将旧机器上的钥匙串简单地复制到新机器上:
scp user@oldmac:Library/Keychains/login.keychain ~/Downloads/oldmac.keychain
--or-- ssh oldmac; cp Library/Keychains/login.keychain ~/Dropbox/oldmac.keychain

在新的 Mac 上,打开钥匙串访问。转到文件 -> 添加钥匙串并选择 Downloads/oldmac.keychain。
然后只需将必要的公钥从 oldmac 钥匙串复制到默认的“登录”钥匙串即可。

0
你需要在iOS的配置门户中编辑你的配置文件。选择“编辑”按钮,然后选择“修改”。输入所需信息(你的姓名、设备、应用程序ID)。
当系统显示配置文件为“活动状态”时,转到iOS配置门户的证书部分并检查你的开发证书。它应该在“配置文件”条目中列出你的配置文件。
之后,你可以下载配置文件并将其拖放到Xcode中。

0

刚刚遇到了这个问题。

只需在底部工具栏上单击“刷新”,XCode 4 就会为您下载和安装所有必要内容。


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