将codeign添加到没有Keychain的私钥ACL

时间:2011-01-21 22:29:14

标签: iphone ios continuous-integration keychain codesign

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

我有:

  • 专用的Mac Mini。
  • 名为“build”的用户帐户
  • 通过在/ Users / build / Library / LaunchAgent中删除plist,将
  • Hudson设置为LaunchAgent进行构建
    • 尝试作为hudson运行的系统范围的LaunchDaemon,但后来无法访问构建用户的登录密钥链。漫长的故事,充满了心痛。
  • 系统设置为在启动时自动登录“build”,以便Hudson开始运行。

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

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

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

假设您这样做,该对话框会修改钥匙串访问控制列表(ACL),以便允许使用代码签名。

您可以通过打开Keychain Access,扩展证书,选择私钥,右键单击,选择Get Info,然后切换到Access Control选项卡来查看。 “处女”密钥只在其“始终允许”应用程序列表中具有Keychain Access。您在对话框中使用和确认的一个也将具有编码。

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

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

I'm aware of one method使用“安全导入”的-T开关,但是当你首先导入密钥时必须指定ACL,因此在Keychain GUI中添加的任何键都必须被抛出并重新导入。不太好。

4 个答案:

答案 0 :(得分:18)

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

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

答案 1 :(得分:5)

非常感谢,非常感谢David Boike。伟大的解决方法,帮助了我很多。 但是有一种更好的方法可以做到这一点。

Open File Dialog press 'Cmd' + 'Shift' + '.'

该组合应该切换文件系统上隐藏项目的可见性。 如果组合无效,请尝试将演示模式更改为“列表”或“网格”并再次尝试。

谢谢,祝你好运!

答案 2 :(得分:4)

我找到了一个解决方案,通过执行一个“点击”“始终允许”按钮的解决方案,因为没有安全性或certtool运气来添加ACL权限。

#!/usr/bin/osascript
tell application "System Events"
  tell window 1 of process "SecurityAgent"
    click button "Always Allow" of group 1
  end tell
end tell

答案 3 :(得分:3)

好的,这花了我差不多半天的时间来搞清楚,但我现在已经开始工作了。我正在关注article

文章显示使用-A选项添加这样的证书,但这对我不起作用。

security import "ADistribution.p12" -k appledev -f pkcs12 -A -P ""

这个问题提到了-T选项,它对我有用。

security import "Distribution.p12" -k appledev -f pkcs12 -P "" -T /usr/bin/codesign