代码设计失败,返回 CSSM_SignData:8001094A

Posted

技术标签:

【中文标题】代码设计失败,返回 CSSM_SignData:8001094A【英文标题】:codesign failed with CSSM_SignData returned: 8001094A 【发布时间】:2011-04-17 10:15:52 【问题描述】:

我有一个非常烦人的代码设计问题:我有 2 台 Mac 机器(M1、M2)和 2 个开发者证书(C1、C2)。虽然钥匙串在 M1 和 M2 上看起来很相似,但我通过代码设计得到了以下结果:

代码设计(M1, C1) ok codesign(M1, C2) nok codesign(M2, C1) nok 代码设计(M2, C2) ok

所以当我使用 C1 在 M1 上成功构建我的项目时,我无法将存储库转移到 M2 并使用 C1 再次构建,我必须更改为 C2 才能成功。 错误代码设计返回错误消息“CSSM_SignData returned: 8001094A”后跟“未知错误 -2070=fffff7ea”。

【问题讨论】:

你解决过这个问题吗?我看到完全相同的错误代码。下面关于仅从单台机器签名的答案是完全错误的。这通常有效,但现在才开始抛出此错误。 【参考方案1】:

要在机器上签署您的应用程序,必须仅从该机器请求证书。所以你不能在 M2 上使用 C1 构建,反之亦然。

不幸的是,这个信息进入了 project.pbxproj,这是至关重要的,必须由版本控制来维护。我认为没有任何方法可以避免将这种特定于机器的信息放入版本控制中。

不过,当您选择要签名的证书时,有一个“自动配置文件选择器”选项。我还没有在单独的机器上测试过它,但听起来它会自动为正确的机器选择正确的证书。但如果不是这样,那么您每次都必须手动选择证书。

我的团队这样做的方式是 - 我们为开发人员提供不同的 mac,我们从一个特定的 mac 完成所有签名工作。

【讨论】:

这听起来很合理,“自动配置文件选择器”似乎工作。非常感谢!【参考方案2】:

您可以从钥匙串中导出 .p12 格式的证书并将它们安装到另一个系统上。如果您将 .cer 文件安装在不同的机器上,它将无法工作!尝试将它们导出并安装在其他系统上。

【讨论】:

以上是关于代码设计失败,返回 CSSM_SignData:8001094A的主要内容,如果未能解决你的问题,请参考以下文章

验证失败后如何在 Laravel 8(行)中返回输入

一个函数应该返回什么可以失败?

20145309信息安全系统设计基础第10周学习总结前篇

验证密码失败。错误:535-5.7.8 用户名和密码不被接受 [重复]

empty对如下8种情况返回true

stm32c8t6初始化mpu6050失败,总是返回8问题的解决