我的系统钥匙串中有私钥和证书,我想使用 CodeSign 访问它,因此需要解锁。
如果我尝试使用下面的脚本解锁登录钥匙串,那么没问题
security unlock-keychain -p password login.keychain
但是如果我对 system.keychain 使用相同的语法,则会收到此错误 security: SecKeychainUnlock 您输入的用户名或密码不正确。
security unlock-keychain -p password /Library/Keychains/System.keychain
从中我可以看到,无法在语法中输入用户名。
我的意图是在代码签名构建时解锁钥匙串,这样我就不会收到如下提示。在jenkins中的代码签名事件的情况下,我会收到类似“用户交互”的错误不允许”
我知道这个问题可以通过授予钥匙串中所有应用程序的访问权限来解决,但我打算通过脚本本身来做到这一点。
任何帮助表示赞赏!
security unlock-keychain
命令解锁系统钥匙串时,钥匙串通常不需要密码或用户名。 它依赖于系统密码。
这就是为什么当您尝试使用
security unlock-keychain -p password /Library/Keychains/System.keychain
使用密码解锁系统钥匙串时,它会失败,因为它需要用户名-密码组合,这在这种情况下不适用。
因此,为了避免在 Jenkins 中的代码签名事件期间出现“不允许用户交互” 错误消息,您可以授予 Jenkins 用户访问系统钥匙串中的私钥和证书的权限,而无需“手动干预”。
根据上面共享的参考资料,这是通过 UI 逐步实现此目的的步骤:
Get Info
。
Access Control
选项卡中,单击
+
符号添加新条目。
jenkins
并将其添加到列表中。
jenkins
条目具有适当的权限(例如:“允许所有应用程序访问此项目”)。
如果您仍然喜欢使用脚本来解锁系统钥匙串(如您所评论的),您可以考虑在脚本中使用
sudo
命令(参见参考资料),以提升权限执行
security unlock-keychain
命令。
注意:始终牢记在脚本中存储密码/密码短语的安全隐患...