首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Teamcity: Mac构建代理无法使用产品标识对.pkg文件进行签名。SignData失败: CSSMERR_CSP_NO_USER_INTERACTION (-2147415840)

Teamcity: Mac构建代理无法使用产品标识对.pkg文件进行签名。SignData失败: CSSMERR_CSP_NO_USER_INTERACTION (-2147415840)
EN

Stack Overflow用户
提问于 2016-10-05 18:34:15
回答 1查看 839关注 0票数 1

场景:

我有一个.pkg文件,需要在我们的TeamCity构建完成后使用TeamCity进行签名。

理想情况下,这可以是在最后运行的构建步骤或脚本。经过研究,我尝试了以下几点:

脚本输入:

代码语言:javascript
复制
security import applicationkey.p12 -k login.keychain -P "password"

security import installerkey.p12 -k login.keychain -P "password"

security -v unlock-keychain -p "password" /Users/administrator/Library/Keychains/login.keychain

security -v unlock-keychain -u /Library/Keychains/System.keychain

productsign --keychain /Users/administrator/Library/Keychains/login.keychain --sign 'Developer ID Installer: Company LLC' CompanyInstaller.pkg CompanyInstallerSigned.pkg

pkgutil --check-signature CompanyInstallerSigned.pkg

输出:

代码语言:javascript
复制
unlock-keychain "-p" "mypassword" "/Users/administrator/Library/Keychains/login.keychain"

unlock-keychain "-u" "/Library/Keychains/System.keychain"

productsign: using timestamp authority for signature

productsign: signing product with identity "Developer ID Installer: Company LLC" from keychain /Users/administrator/Library/Keychains/login.keychain

productsign: adding certificate "Developer ID Certification Authority"

productsign: adding certificate "Apple Root CA"

2016-10-05 14:57:11.484 productsign[9385:29611120] SignData failed: CSSMERR_CSP_NO_USER_INTERACTION (-2147415840)

Error signing data.

productsign: error: Failed to sign the product.

问题:

我已经注意到许多提到的解决方案,在第一次提到密钥链的访问控制时,单击对话框提示符中的“始终允许”,但是我与此构建代理的唯一已知交互是通过SSH。是否有方法使用Teamcity上的产品标识来签署.pkg,而不需要gui与此“始终允许”提示进行交互?或者,是否有方法登录到构建代理并查看gui,这样我就可以单击这个“始终允许”来启用它了吗?

注意:我还尝试保存(本地签名机)私钥的访问控制,以“允许所有应用程序访问此项”,导出它,导入到构建代理的login.keychain,然后再次尝试,只具有相同的输出。当我在我的macbookpro上做同样的过程时,一切都正常,但是我不记得我是否从很久以前就点击了"Alway允许“。

有什么想法吗?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2017-01-16 15:45:08

我们也遇到了这个问题--我们使用TeamCity在Mac构建代理上签名包。

当我们第一次设置构建代理时,我们将证书导入到密钥链中,并授予‘始终允许’的权限;这似乎是可行的。在某个时候,构建代理被重新启动,然后签名包就不再工作了,不管我们用权限和信任设置尝试了什么。我们一直在获取SignData failed: CSSMERR_CSP_NO_USER_INTERACTION错误。

我们修复了这个(希望是永久的!)通过将证书移动到'System‘密钥链(以前在’登录‘中)密钥链。我们根本不需要更改对productsign的调用--它正确地选择了系统密钥链。我设想,如果在两个密钥链中都有证书,那么需要告诉productsign使用哪个密钥链(--keychain ...)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39881355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档