2013-12-19 75 views
3

我刚刚在Mac OS X 10.7上安装了证书,并在编译我的项目后编写了一个在多个文件上运行codesign的脚本。我创建了一个新的钥匙串,并禁用了一段时间后锁定它的选项。它看起来像登录钥匙串。但每次我的脚本运行codesign命令时,都会发生以下错误:<filename>: User interaction is not allowed.如果我启动一个shell,请使用security unlock-keychain <path>解锁钥匙串,然后手动运行该脚本,它将起作用。问题是如何保持钥匙链始终处于解锁状态,以便我的自动构建可以签署文件?钥匙串在运行编码签名时总是要求输入密码

+0

你是如何解锁脚本中的钥匙串的?脚本写的是什么样的语言? –

+0

我使用/ bin/sh。我不会从剧本中解锁它。如果我手动解锁它,它会询问密码。我不想让我的密码存储在脚本中,因为其他人也可以访问它。 – RegedUser00x

+0

您可以尝试使用'security unlock-keychain -p ',但在使用它之前请考虑其安全含义。基本上问题是钥匙串通常只在交互式shell中解锁。有一些可用的脚本可以模拟这个脚本并运行需要执行代码签名的脚本。 –

回答

2

当您使用security unlock-keychain -p $PASSWORD $KEYCHAIN钥匙链将被解锁,但仅5分钟,由于自动重新锁定。为了让钥匙链永久解锁,您需要使用security set-keychain-settings $KEYCHAIN

为了完整答案,我还建议您使用security import $CERT -k $KEYCHAIN -P "$CERTPASSWORD" -T /usr/bin/codesign授予/usr/bin/codesign访问您的证书。