2013-04-29 106 views

回答

3

我解决了它意外 - 在梳理了几个小时的网络 - 同时复制了与Apple支持提交事件报告时的步骤。

从Mac(与ssh会话相反),同一个命令生成一个弹出窗口,要求获得访问Keychain的权限。

选择“始终允许”后,问题就消失了。永远。

+0

这可能是一个问题,如果您试图签署一个包,并且您正在通过ssh访问mac机器。 – bikram990 2013-08-16 09:45:55

+0

@ bikram990 -precisely!这就是导致问题的原因 - 并且是解决方案。 – 2013-08-19 11:21:16

3

尝试从这个终端解锁钥匙串:

security -v unlock-keychain -p "<Password>" "/Users/<UserName>/Library/Keychains/login.keychain" 
2

基于Danny Schoemann's答案和我自己的研究,我发现完整的解决方案对我来说:

  1. 你真的需要使用登录到您的Mac机GUI,第一次,并签署任何与您需要的证书。然后您将获得请求窗口,其中包含可用选项“始终允许”使用此证书(或类似的证书)。

    • 要点:如果你需要使用SSH 其他控制台会话(如詹金斯)使用productsign,您的证书必须由安装到系统范围,但不用户范围。 enter image description here enter image description here
  2. 如果你需要保持你的证书中的用户范围,则需要每次解锁钥匙串在控制台会话时,你需要签署的东西(如Alex写道):

    security -v unlock-keychain -p "Password" /Users/<UserName>/Library/Keychains/login.keychain" 
    

    你可以把它放到你的脚本中。

    明显减去这个解决方案 - 你需要将你的密码保存在一些未加密的脚本中,这是不安全的,所以我更喜欢第一个解决方案。

+1

我还必须将'--keychain'参数添加到'productsign',否则它会尝试打开登录钥匙串,并以'CSSMERR_CSP_NO_USER_INTERACTION'失败。 – UrOni 2016-06-13 13:54:40