允许 codesign 使用我的钥匙串时遇到问题

Posted

技术标签:

【中文标题】允许 codesign 使用我的钥匙串时遇到问题【英文标题】:Having issue with allowing codesign to use my keychain 【发布时间】:2015-11-12 09:03:55 【问题描述】:

我正在使用El Capitan 和 Xcode 7.1,我正在尝试构建和归档我的应用程序以上传到应用商店。编译后弹出此警报:

但是Always AllowAllow按钮根本不起作用,但是Deny取消警报!我应该如何解决这个问题?我正在使用新的 iMac,并将旧 Mac 上的所有数据转移到新的 Mac 上。当网站想要从钥匙串访问密码时,Safari 甚至会出现此问题。

这是控制台日志:

SecurityAgent[1476]:忽略用户操作,因为对话框有 从不受信任的来源收到事件

我已经查看了这个question,但我没有分享任何东西!

【问题讨论】:

你有没有修改过 Xcode.app 的内容?它可能破坏了 Xcode 签名,因此该应用程序将不受信任,我建议尝试将其删除并执行全新安装。 【参考方案1】:

找到了解决办法:

就操作系统而言,Alfred、TextExpander 或 MagicPrefs 等第三方实用程序似乎会“控制”窗口。你可以通过禁用它们来找到罪魁祸首,然后一个一个地打开它们,直到你找到一个(或多个)以这种方式影响 Keychain 的东西。 信用:https://apple.stackexchange.com/questions/212622/keychain-wont-let-copy-passwords-after-10-11-1-update

就我而言,我刚刚卸载了 MagicPref 应用程序,问题就解决了

【讨论】:

同样帮助了我。禁用 MagicPrefs,一切正常。 平滑鼠标也会影响这一点。您需要杀死 SmoothMouseDaemon 才能允许。但是已经打开的对话框仍然没有响应,只有当它再次出现时您才能允许。 我在使用 Synergy 时遇到了同样的问题。杀死它可以让我按“始终允许”【参考方案2】:

不确定您是否已经弄清楚了,但前几天我遇到了这个确切的问题。你的 Xcode build box 是远程的吗?是否启用了 ARD/VNC? Apple 最近发布了 CVE-2015-5943“恶意应用程序可以以编程方式控制钥匙串访问提示”的更新,因此在使用 VNC/ARD 时始终允许/允许按钮不起作用。可能导致该错误出现的另一件事是修改系统输入的应用程序,例如 Smoothmouse 或 MagicPrefs。

您可以通过重新导入私钥并在导入时信任 codesign 二进制文件来解决此问题。如果您没有原始私钥 .p12 文件,您可以将其从钥匙串中导出。在重新导入之前,您需要从钥匙串中删除私钥(确保您首先在某处备份了私钥!!)。

要导入并信任 codesign 二进制文件,您可以使用此命令。

security import /tmp/my-cert-path.p12 -k /Users /xcodeuser/Library/Keychains/login.keychain -P mysupercoolprivatekeypassword -T /usr/bin/codesign

如果您需要继续将受信任的应用程序添加到私钥,我肯定会确保从现在开始将您的开发人员私钥备份到其他地方。如果您丢失了私钥并且无法从 Keychain Access 导出,如果您没有本地访问权限(我们使用远程托管的 Mac Mini),您可能需要重新生成它。

您发布的日志条目是正确的。

SecurityAgent[1476]: Ignoring user action since the dialog has received events from an untrusted source

'关于 OS X El Capitan 10.11.1、安全更新 2015-004 Yosemite 和安全更新 2015-007 Mavericks 的安全内容' https://support.apple.com/en-us/HT205375

面临同样问题的其他人:

El Capitan + Xcode 7.1 not letting me allow enterprise signing

https://superuser.com/questions/1004881/osx-10-11-1-keychain-access-does-not-allow-change-to-access-permission

http://nerdanswer.com/answer.php?q=1181710

【讨论】:

我一直在 El Cap 上尝试这个安全导入命令,它似乎忽略了我导入和信任用于协同设计的密钥的请求。让它尊重信任选项的任何技巧(尝试了-T和-A)?我通过 VNC 在终端上运行此命令,因为我没有对机器的物理访问权限。 @PaulBuchanan 这就是我正在处理的情况,您是否在再次尝试导入之前删除了现有的钥匙串项目?该命令仅在我首先删除钥匙串项目时才对我有效,如果该项目已经存在,它将不会更新它。 刚刚更新了这个欧文,我发现你必须在私钥上指定应用程序,而不是证书。像这样:security import ~/Desktop/<exported-certificate>.p12 -k "/Users/<user>/Library/Keychains/login.keychain" -t priv -P <password> -T /usr/bin/codesign -T /Applications/Utilities/Keychain\ Access.app。因此,只需删除证书下方显示的私钥,然后再次导入以添加新应用。 最新版本的 El Capitan 10.11.4 beta 7 已经修复了这个问题,因此即使通过 VNC 登录,您也可以再次允许访问钥匙串中的证书。 太棒了,感谢@Pegolon 的提醒。很高兴听到它。【参考方案3】:

我遇到了同样的问题,我找了很长时间。实际上,我在 Microsoft word 的弹出框上遇到类似问题时找到了这个答案。

我使用的修复方法是重新启动计算机并以安全模式 (https://support.apple.com/en-us/HT201262) 打开电源,打开 Xcode(您可能需要安装组件),然后再次尝试存档。这一次,当您单击始终允许时,它应该可以工作。

希望这会有所帮助!

【讨论】:

以上是关于允许 codesign 使用我的钥匙串时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

在拒绝 Codesign 访问钥匙串后,Xcode 不会让为设备构建

Xcode 11 Firebase auth for Mac app has error 访问钥匙串时出错

codesign "操作被用户取消"

使用用户 _www 或守护进程设置 macOS 钥匙串搜索列表

Electron builder 代码签名:bundle 格式无法识别、无效或不合适

Sierra 中的安全/协同设计:钥匙串忽略访问控制设置和 UI 提示权限