从 ssh 终端会话签署应用程序时,我收到以下错误:
productsign[29321:707] SignData failed: CSSMERR_CSP_NO_USER_INTERACTION (-2147415840)
productsign一直在工作,直到最近。
如何解决此错误?
从 ssh 终端会话签署应用程序时,我收到以下错误:
productsign[29321:707] SignData failed: CSSMERR_CSP_NO_USER_INTERACTION (-2147415840)
productsign一直在工作,直到最近。
如何解决此错误?
我偶然解决了这个问题 - 在梳理了几个小时的网络之后 - 在向 Apple 支持提交事件报告时重现了这些步骤。
在 Mac 上(与 ssh 会话相反),相同的命令会生成一个弹出窗口,要求获得访问钥匙串的权限。
选择“始终允许”后,问题就消失了。永远。
尝试从此终端解锁钥匙串:
security -v unlock-keychain -p "<Password>" "/Users/<UserName>/Library/Keychains/login.keychain"
根据Danny Schoemann 的回答和我自己的研究,我为我找到了完整的解决方案:
您确实需要第一次使用GUI登录到您的 mac 机器,并使用您需要的证书签署任何内容。然后您将获得带有可用选项“始终允许”的请求窗口以使用此证书(或类似的东西)。
如果您需要将证书保留在用户范围内,则需要在每次需要签名时在控制台会话中解锁钥匙串(如Alex所写):
security -v unlock-keychain -p "Password" /Users/<UserName>/Library/Keychains/login.keychain"
您可以将其放入您的构建脚本中。
此解决方案的明显缺点 - 您需要将密码存储在一些未加密的脚本中,这是不安全的,所以我更喜欢第一个解决方案。
您实际上可以修复此错误。当您在 productsign 中时,您使用的是开发人员 ID 安装程序证书,并且通常建议它无权访问用于签名的私钥,但会出现此错误而失败。
要解决此问题
现在再次从命令行尝试 productsign,它应该可以工作。