我试图用一个特定的证书来自动化构建iphone应用程序的过程。因此,想象一下,如果不同的用户将他们的证书上传到系统中,并且它可以立即用于代码签名。我想在没有任何互动的情况下这样做。我也不想用不同的用户证书来扰乱系统或登录密钥链。为此,我有:
一切正常,但当codesign程序尝试执行签名权限时,我需要手动单击enter。我的钥匙链都没锁。奇怪的是,如果我使密钥链成为默认的密钥链,那么它就能正常工作,但这是不可扩展的(即,在任何给定的时间,我只能有一个构建过程。
当我手动单击“始终允许”该过程时,我在我的密钥链转储中得到一个条目,如下所示:
entry 1:
authorizations (6): decrypt derive export_clear export_wrapped mac sign
don't-require-password
description: privateKey
applications (2):
0: /usr/bin/codesign (OK)因此,我认为我需要在安全方面使用授权命令,以便对这些权限进行预自动化codesign。安全手册页面很差。我似乎无法让它使用这样的命令:
安全-v授权-uew符号\ /usr/bin/codesign代码标记vars,指向app和一个特定的密钥链
有人有什么想法吗?
发布于 2011-03-25 15:52:54
如果您使用-A将证书导入到您的密钥链中,它将允许访问所有试图请求证书的程序。这不是很安全,但很有效。您也可以使用-T将其限制在特定的应用程序上。查找在人防系统中找到的进口参数。
发布于 2011-01-16 15:30:35
在我的系统中,一旦密钥链被解锁
安全解锁-密钥链
我只是让xcodebuild同时完成构建和代码签名。
如果您的keychanins是解锁的,它应该没有必要使用上述调用。
您还可能希望检查具有安全权限的命令执行。
发布于 2012-01-12 15:54:01
我想在这里添加答案池,但也重新讨论我认为没有答案的部分问题。
下面的命令导入一个标识(cert +私钥),并指定它应该“始终允许”代码符号访问它(防止键链访问警报提示用户单击按钮):
`security import Targets/CurrentTarget/Certificate.p12 -k #{KEYCHAIN} -P "#{cert_pwd}" -T /usr/bin/codesign`此命令允许所有应用程序访问,而不仅仅是代码签名:
security import Targets/CurrentTarget/Certificate.p12 -k #{KEYCHAIN} -P "#{cert_pwd}" -A
这些命令中的任何一个都会处理每次在密钥链中使用私钥时弹出的对话框。但是,它们不会处理第一次请求使用私钥许可时弹出的类似警报。此警报将在第一次使用时出现,并要求您选择“始终允许”、“拒绝”或“允许”。在此之后(如果您使用上面的-T或-A选项,假设键仍然在您的密钥链中),您将不会看到对话框。
我的问题是:如何消除第一次使用时出现的警报?
我已经考虑过使用Apple来自动点击“始终允许”按钮,但是由于警报是在xcodebuild命令的中间触发的,所以我不确定这是否有效。任何帮助都将不胜感激!
https://stackoverflow.com/questions/3864770
复制相似问题