iphone - 在没有钥匙串(keychain)的情况下将代码设计添加到私钥 ACL

标签 iphone ios continuous-integration keychain codesign

我正在尝试为稳定的 iPhone 应用程序设置持续构建/集成。

我有:

  • 专用 Mac Mini。
  • 名为“build”的用户帐户
  • Hudson通过在/Users/build/Library/LaunchAgents 中删除一个 plist,设置为构建的 LaunchAgent
    • 尝试作为系统范围的 LaunchDaemon 作为 hudson 运行,但随后无法访问构建用户的登录钥匙串(keychain)。说来话长,充满心痛。
  • 系统设置为启动时自动登录“build”,这样Hudson就开始运行了。

最大的问题是代码签名和钥匙串(keychain)。

我们代表客户的开发者身份创建代码,因此我们有多个开发者身份,并且我们将添加更多。

我想把 Mini 放在一个很暗的房间里,永远不要看它,但是当你第一次使用开发者身份构建时,会弹出一个 GUI 对话框,询问你是否要始终允许 codesign 访问开发者身份。

假设您这样做,该对话框会修改钥匙串(keychain)访问控制列表 (ACL),以便允许进行协同设计。

您可以通过打开“钥匙串(keychain)访问”、展开证书、选择私钥、右键单击、选择“获取信息”,然后切换到“访问控制”选项卡来查看此信息。 “原始” key 只会在其“始终允许”应用程序列表中具有钥匙串(keychain)访问权限。您已经使用并在对话框中确认的一个也将具有代码设计。

此框提供了一种添加应用程序的方法,但您会获得标准的 Finder 文件选择器,它会隐藏 Unix 文件夹。无法导航到/usr/bin/codesign。所以手动添加是不可能的!

有人知道解决这个问题的方法吗?

I'm aware of one method使用“安全导入”的 -T 开关,但随后您必须在首先导入 key 时指定 ACL,因此必须丢弃并重新导入钥匙串(keychain) GUI 中添加的任何 key 。不太好。

最佳答案

通常情况下,Keychain 的“获取信息”对话框呈现给您的文件系统的“清理”版本不允许您访问隐藏的/usr/bin 目录,但我找到了解决此问题的方法。

  1. 获取正常的 Finder 窗口以显示所有文件。如果您不知道如何执行此操作,check out this article .
  2. 在普通的 Finder 窗口中,导航到/usr/bin
  3. 将 bin 拖到边栏中的“位置”区域。现在 bin 是您可以从任何地方访问的快捷方式。
  4. 在钥匙串(keychain)的“获取信息”->“访问控制” Pane 中,单击“+”按钮打开查找应用程序对话框。
  5. 单击此边栏上“位置”下方的垃圾箱。
  6. 导航并选择协同设计。
  7. 单击“保存更改”按钮。

关于iphone - 在没有钥匙串(keychain)的情况下将代码设计添加到私钥 ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4764499/

相关文章:

iphone - 离开初始 View Controller 时停止播放音乐(使用 AVAudioPlayer)

ios - 应用程序因 EXC_BREAKPOINT 错误而崩溃

iOS光学字符识别——网格中的字符

.net-core - Bitbucket Pipeline/.Net Core - 项目文件不存在

continuous-integration - 是否应该在每次构建时执行代码覆盖率?

iphone - 是否可以在 iOS 上使用 Quartz 从 PDF 数字中获取 double 值?

iphone - 有没有办法在iOS模拟器上查看文件系统?

ios - 诺卡因 : Saved audio file does not work

ios - 与 IBAction 链接的自定义 IBOutlet 属性

jenkins - docker在官方的 Jenkins 容器中构建