配置文件中的证书与签署应用程序的证书不匹配

Certificate in Provisioning Profile does not match certificate which signed app

我有一个 .ipa,我使用我的开发者证书签署了它。我将此 .ipa 发送给客户,他们必须用自己的证书辞职才能进行内部分发。他们收到以下错误:

FAIL: Certificate in Provisioning Profile does not match certificate which signed app. To fix, re-sign with the Production Distribution certificate named "XXX".

我真的应该辞职吗?我假设客户端必须使用新证书 and provisioning profile 来辞职,但我不确定这是否可行。我的假设正确吗?

在我看来,我不应该对他们拥有的分发证书负责,而且他们做错了什么。我可能是错的,如果是的话——我应该用另一个证书签署 .ipa 吗?

可以退出应用程序。它通常用于创建白色标签应用程序,当您构建应用程序一次并在您放弃构建以分发给客户之后。 但有些时刻你必须知道。 配置文件应用程序包标识符 相关。您不能使用其他应用程序的配置文件。在更改配置文件之前,您必须更改 Info.plist 文件中的应用程序标识符。配置文件受证书信任。配置文件定义应用程序 features/entitlements(推送通知、分发类型、调试模式等) 因此 Provision Profile 和签名证书都已连接。

我使用了codesign实用程序(macOS系统中的命令行工具)。

要在签名后检测问题,您可以使用以下指南:

  1. *.ipa 文件是 zip 归档文件夹。通过命令解压缩:$ unzip MYAPP.zip。之后出现文件夹 Payload
  2. Payload\MYAPP.app 文件夹中找到 embedded.mobileprovision。用任何纯文本编辑器打开它。我用 TextWrangler
  3. 仔细阅读,你就知道ProvisionProfile是否有效
  4. 要获取有关代码签名状态的信息,请使用 $ codesign -vv -d Payload/MYAPP.app

阅读所有输出有助于理解问题。也对终端友好。

GitHub page

系统中用于签名和检测证书的更多有用工具

UPDATE(添加 @avregi 的答案):

我们使用名为 iOS App Signer 的工具修复了它。

1:我把开发者证书签名的.ipa文件发给了客户端

2:客户端在Apple开发者中心创建所需的证书和配置文件。

3:客户端打开iOS App Signer 并填写必填字段。 (在我的例子中:.ipa,他们的证书和配置文件)。

4:iOS App Signer 创建了一个新的已辞职 .ipa 文件。

奖金:

5:您可以通过在 finder 中打开 .app 文件(显示包内容)来验证您的 .ipa 文件。在此文件夹中搜索您的 .mobileprovision 文件并使用 Provisioning 检查它。您应该会看到新的配置文件。

如果您遵循这些步骤,则可以将 .ipa 从开发人员证书重新注册为分发证书。

重要提示:应用程序 iResigner 没有退出 libswiftCore 框架,这给我们带来了问题。我不推荐这个工具,因为它已经过时了。