如何判断用于签署.ipa的个人资料/签名证书?

时间:2013-02-14 17:58:44

标签: ios xcode certificate ipa

我有一堆.ipa文件,我使用了一个脚本来重新签名。

那么如何检查供应配置文件/签名证书以确保他们使用正确的信息?

理想情况下,我希望能够获取任何.ipa文件并告知使用哪个配置文件/签名证书进行签名。

Backstory:我们的企业发行证书即将到期,我想重新签名。这是我们在Xcode中制作和存档的所有内容的简单版本,但对于第三方供应商制作的可分发版本,我不能这样做。我想避免要求重新签名.ipa文件,因为新的.ipa 可能包含未知的更改并引入问题,他们可能也会向我们收费......但我更担心的是第一期。

由于我们的旧的和新的分发证书仍然有效(你得到6个月的重叠)我需要能够确认新的分发证书是否已被使用,否则当旧的分发证书到期并且“辞职”时,我看起来真的很傻脚本实际上没有完成这项工作。

7 个答案:

答案 0 :(得分:61)

配置配置文件具有可以使用终端命令查看的UUID:

  

security cms -D -i(path_to_your_provisioning_profile)

请参阅命令输出的UUID部分,如:

<key>UUID</key> <string>A008C022-7B82-4E40-8B37-172763E1E3CC</string>

Xcode插入用于在.app包中签署应用程序的配置文件。要找到它,请将.ipa重命名为.zip,使用Finder解压缩,找到/ Payload中的.app文件。在.app文件中“显示包内容”,找到名为embedded.mobileprovision的配置文件。

使用上述命令转储其权利,并将其与您在Xcode Organizer中的个人资料中找到的UUID进行比较&gt; “设备”标签&gt; “库”下的“配置文件”部分。您可以使用“在Finder中显示”来显示它们在磁盘上的位置。

答案 1 :(得分:25)

晚会......

但是这个工具可以节省一些时间:nomad/shenzhen

$ ipa info /path/to/app.ipa

+-----------------------------+----------------------------------------------------------+
| ApplicationIdentifierPrefix | DJ73OPSO53                                               |
| CreationDate                | 2014-03-26T02:53:00+00:00                                |
| Entitlements                | application-identifier: DJ73OPSO53.com.nomad.shenzhen    |
|                             | aps-environment: production                              |
|                             | get-task-allow: false                                    |
|                             | keychain-access-groups: ["DJ73OPSO53.*"]                 |
| CreationDate                | 2017-03-26T02:53:00+00:00                                |
| Name                        | Shenzhen                                                 |
| TeamIdentifier              | S6ZYP4L6TY                                               |
| TimeToLive                  | 172                                                      |
| UUID                        | P7602NR3-4D34-441N-B6C9-R79395PN1OO3                     |
| Version                     | 1                                                        |
+-----------------------------+----------------------------------------------------------+

答案 2 :(得分:17)

检查一下:tool

在IPA文件或配置文件上点击空间将显示详细信息

enter image description here

答案 3 :(得分:13)

根据Bobjt的回答,我使用IPCU来获取配置文件的详细信息:

  1. 将.ipa重命名为.zip
  2. 使用Finder解压缩
  3. 在/ Payload中找到.app文件。
  4. 在.app文件中显示“包内容”,找到名为embedded.mobileprovision的配置文件。

  5. 将mobileprovisioning文件拖到iPhone配置实用程序

  6. IPCU显示个人资料的名称/截止日期等。

答案 4 :(得分:4)

我已经能够使用以下过程成功进行测试。

  1. 将原始.ipa安装到设备上。
  2. 转到设置 - &gt;常规 - &gt;配置文件(请参阅旧的配置文件)
  3. 从设备
  4. 删除应用和旧配置文件
  5. 辞职app。
  6. 在设备上安装重新签名的应用
  7. 转到设置 - &gt;常规 - &gt;配置文件(请参阅新的配置文件)
  8. 这似乎是确保配置文件更新的防弹方式,因为配置文件中只有1个签名证书...然后我们必须使用新证书进行签名。

    (但我仍想找到更好的方法)

答案 5 :(得分:4)

我最终使用了Bobjt和HaemEternal解决方案提案的混合物。

  1. 查找档案。
  2. 显示包裹内容。
  3. 复制.app文件
  4. 显示.app文件的包内容。
  5. 复制embedded.mobileprovision文件。
  6. 运行&#34;安全cms -D -i(path_to_your_provisioning_profile)&#34;
  7. 从步骤6中的通话结果中查找UUID号码。
  8. 打开Iphone配置实用程序,查看配置文件,找到具有相同UUID号的配置文件。

答案 6 :(得分:1)

如果您尝试确定是否使用特定证书对.ipa进行签名,则可以执行以下操作:

如果您熟悉python,则可以使用我创建的此脚本将.ipa中嵌入的证书与您拥有的证书进行比较。

https://gist.github.com/ronsims2/1b7a8b9e15898f9406788988106b2f78

python ipa_cert_checker.py /Users/janedoe/Dcouments/Foobar.ipa /Users/janedoe/Dcouments/barfoo.cer

或者,您可以在Mac的命令行中手动执行脚本。

  1. 解压缩IPA存档。它将产生一个名为“有效负载”的文件夹。

    unzip Foobar.ipa

  2. 读取嵌入式配置信息。请注意,有效载荷目录中的软件包/文件夹与.ipa相同,但带有.app扩展名。

    security cms -Di Payload/Foobar.app/embedded.mobileprovision

在上述命令的输出中,证书被嵌入与键“ DeveloperCertificates”关联的数组数据元素中,作为base64字符串。 3.复制证书(不包括xml标记,并确保没有多余的空格),然后将其作为文本保存到方便的位置。在此示例中,我将其称为“ cert_from_foobar.txt”

  1. Base64对已知证书进行编码,并将输出保存到文件中。

    base64 barfoo.cer > barfoo.txt

  2. 将已知证书与您保存的嵌入式证书进行比较。 cmp cert_from_foobar.txt barfoo.txt || echo 'These files are NOT the same.'

如果它们相同,您将不会看到任何消息。