代码签名失败,返回CSSM_SignData:8001094A

时间:2011-04-17 10:15:53

标签: objective-c xcode codesign

我有一个非常烦人的编码问题:我有2台Mac机(M1,M2)和2台开发人员证书(C1,C2)。虽然M1和M2上的钥匙链看起来相似,但我在codesign上有以下结果:

  • 代码签名(M1,C1)确定
  • codesign(M1,C2)nok
  • codesign(M2,C1)nok
  • 代码签名(M2,C2)确定

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

2 个答案:

答案 0 :(得分:1)

要在计算机上对您的应用进行签名,必须仅从该计算机请求证书。所以你不能在M2上用C1构建,反之亦然。

不幸的是,这些信息会进入project.pbxproj,这很关键,必须由版本控制维护。我认为没有办法避免在版本控制中使用这种机器特定信息。

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

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

答案 1 :(得分:0)

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