Mac OS X在编译项目时想要使用系统钥匙串。

120

当我编译Xcode项目时,系统要求我输入系统管理员用户名和密码。完整信息如下:

Mac OS X要进行更改。键入管理员的名称和密码以允许此操作。Mac OS X希望使用系统钥匙串。

请问有没有解决办法?

13个回答

304
  1. 打开钥匙串访问。
  2. 在左上角解锁钥匙串(如果已经被锁住)。
  3. 从左上角选择“系统钥匙串”。
  4. 找到你的分发证书并点击披露三角形。
  5. 双击你的分发证书下面的“私钥”。
  6. 在弹出窗口中,切换到“访问控制”选项卡。
  7. 选择“允许所有应用程序访问此项目”。
  8. 保存更改。
  9. 关闭所有窗口。
  10. 运行应用程序。

3
我找不到任何分发证书下拉菜单。在哪里可以找到它? - Ananth Srinivasan
4
PVCS只是指在主窗口上列出的帐户列表。双击需要输入管理员名称和密码的帐户。 - crazyDiamond
2
我发现,在El Capitan上,您需要双击与格式yourhostname.domain.identity匹配的私钥,然后执行6-8步骤。 - Jason D
在El Capitan的第8步,我收到了一个窗口询问“钥匙串访问想要修改系统钥匙串”,并要求输入我的密码。这是好的。之后,在另一个弹出窗口中,它会询问“OS X想要进行更改。输入管理员的名称和密码以允许此操作。”-但是这里没有任何凭据可用... - RAM237
从安全角度考虑,只允许Xcode和相关工具访问该私钥不是更好吗? - quemeful
显示剩余2条评论

33

问题出在密钥串中的“系统”下的开发者证书上,左侧面板常常是锁定状态,并需要密码来解锁!

所以只需要将开发者证书移至“登录”,该处始终为解锁状态。这样你的问题就得到解决了。


2
这对我很有帮助,但我无法将钥匙串移动到“登录”。然而,从系统钥匙串中删除证书是我认为解决此问题的方法。 - goelakash
这仅适用于从Xcode GUI构建,当您从CLI(例如在CI环境中)构建时,密钥和证书必须位于系统钥匙串中。 - RAM237
太好了!对我有用。我的证书在“系统”下,将其移动到“登录”。 - lal
1
除了这个,其他都没用。请注意,我无法移动它,只能删除并手动将证书拖到“登录”位置。 - Lirik

16
  1. 打开密钥串访问

  2. 在左侧面板中点击“系统”

  3. 如果锁定了,则解锁左上角的“系统”钥匙串

  4. 按种类对系统项目进行排序,以便将密钥放置在顶部位置

  5. 查找一直要求输入密码的私有密钥

  6. 双击它并选择“访问控制”

  7. 选择“允许所有应用程序访问此项目”

  8. 保存更改,锁定系统钥匙串并退出密钥串访问应用程序

  9. 重新启动一直要求修改您的钥匙串的应用程序


作为最佳实践,对于第7步,只允许特定的应用程序访问。因为安全原因。 - Mike Rapadas
1
这与多年前提供的答案有何不同?(链接为 https://dev59.com/gGkv5IYBdhLWcg3w_lzE#20324331) - grg
1
当我回答这个问题时,答案已经两年了,而且答案对我没有用,所以我写下了我采取的步骤来使它工作,因此得到了5个赞。不要来更新他的答案,然后问我为什么我的不同...如果它是相同的,我相信每个人都会像你一样给它点踩。 - emotality
2
我在第8步无法保存更改。我输入管理员密码(要求我输入两次),但是当我重新打开密钥时,更改并没有被保存!为什么会这样? - Danijel

5

我遇到了这个问题,是因为我的登录和系统钥匙串中有重复的证书。通过打开钥匙串访问并删除所有在系统中也存在于登录中的证书,解决了这个问题。希望这可以帮到你。


这仅适用于从Xcode GUI构建,当您从CLI(例如在CI环境中)构建时,密钥和证书必须位于系统钥匙串中。在一台Mac上,我有相同的情况:在登录和系统钥匙串中重复,一切都正常工作,但是在另一台上却不行,原因未知... - RAM237

4

将您的私钥从“系统”移动到“登录”中的钥匙串访问。然后将您的开发者证书移动到“登录”中。这对我很有效。


3
我发现这个问题是由于配套文件出现的。我删除了所有之前的配套文件,然后重新安装了需要的一个。

2
在我的情况下,我前往“钥匙串访问”,在“钥匙串”(左上角)中选择“系统”。然后对于每个项目:右键单击,“获取信息”,“访问控制”,并将Xcode添加到“始终允许这些应用程序访问:”列表中。

1

我采用了类似@krafter的解决方案,但是不是给系统钥匙串中的所有内容都授权,而是只需要将xcode添加到钥匙串下的配置文件中 -> 系统 -> "你的配置文件" -> 获取信息 -> 访问控制,然后只需添加xcode即可。这就是在4.6版本中起作用的方法。


1

访问控制设置似乎无法保存存储在系统钥匙串中的私钥,因此尝试将Xcode添加到白名单中并不起作用。

为了保留访问控制更改,我不得不将私钥和证书复制到登录钥匙串中。这样可以避免Xcode在分发代码签名存档时打扰我。

请注意,如果更改证书的信任设置(例如,始终允许进行代码签名),Xcode将停止分发;您必须保持这些设置为系统默认值。

我希望有比这更好的解决方案,因为这感觉不对。但现在它能够工作。


0

是的 - 只有以管理员权限运行 XCode 才可以。它需要管理员权限来执行一系列任务,如安装、调试会话等。


我该如何更改Xcode首选项以便以管理员权限运行? - Singh
我的意思是,以管理员身份定义的用户运行它。 - Stavash

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