10

从 ssh 终端会话签署应用程序时,我收到以下错误:

productsign[29321:707] SignData failed: CSSMERR_CSP_NO_USER_INTERACTION (-2147415840)

productsign一直在工作,直到最近。

如何解决此错误?

4

4 回答 4

6

我偶然解决了这个问题 - 在梳理了几个小时的网络之后 - 在向 Apple 支持提交事件报告时重现了这些步骤。

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

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

于 2013-04-29T12:56:20.097 回答
5

尝试从此终端解锁钥匙串:

security -v unlock-keychain -p "<Password>" "/Users/<UserName>/Library/Keychains/login.keychain"
于 2015-03-10T09:28:49.480 回答
3

根据Danny Schoemann 的回答和我自己的研究,我为我找到了完整的解决方案:

  1. 您确实需要第一次使用GUI登录到您的 mac 机器,并使用您需要的证书签署任何内容。然后您将获得带有可用选项“始终允许”的请求窗口以使用此证书(或类似的东西)。

    • 重要提示:如果您需要将 productsign 与ssh或其他控制台会话(如Jenkins)一起使用,您的证书必须安装到系统范围内,而不是安装到用户范围内。 在此处输入图像描述 在此处输入图像描述
  2. 如果您需要将证书保留在用户范围内,则需要在每次需要签名时在控制台会话中解锁钥匙串(如Alex所写):

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

    您可以将其放入您的构建脚本中。

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

于 2015-09-11T09:52:55.640 回答
2

您实际上可以修复此错误。当您在 productsign 中时,您使用的是开发人员 ID 安装程序证书,并且通常建议它无权访问用于签名的私钥,但会出现此错误而失败。

要解决此问题

  1. 钥匙串访问->单击登录钥匙串或相应钥匙串下“开发人员 ID 安装程序”证书前面的小三角箭头 (>)。
  2. 双击私钥
  3. 单击“访问控制”选项卡
  4. 选择“允许所有应用程序访问此项目”

现在再次从命令行尝试 productsign,它应该可以工作。

于 2020-09-15T07:01:09.627 回答