我有一堆.ipa文件,我使用了一个脚本来重新签名。
那么如何检查供应配置文件/签名证书以确保他们使用正确的信息?
理想情况下,我希望能够获取任何.ipa文件并告知使用哪个配置文件/签名证书进行签名。
Backstory:我们的企业发行证书即将到期,我想重新签名。这是我们在Xcode中制作和存档的所有内容的简单版本,但对于第三方供应商制作的可分发版本,我不能这样做。我想避免要求重新签名.ipa文件,因为新的.ipa 可能包含未知的更改并引入问题,他们可能也会向我们收费......但我更担心的是第一期。
由于我们的旧的和新的分发证书仍然有效(你得到6个月的重叠)我需要能够确认新的分发证书是否已被使用,否则当旧的分发证书到期并且“辞职”时,我看起来真的很傻脚本实际上没有完成这项工作。
答案 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)
答案 3 :(得分:13)
根据Bobjt的回答,我使用IPCU来获取配置文件的详细信息:
在.app文件中显示“包内容”,找到名为embedded.mobileprovision的配置文件。
将mobileprovisioning文件拖到iPhone配置实用程序
IPCU显示个人资料的名称/截止日期等。
答案 4 :(得分:4)
我已经能够使用以下过程成功进行测试。
这似乎是确保配置文件更新的防弹方式,因为配置文件中只有1个签名证书...然后我们必须使用新证书进行签名。
(但我仍想找到更好的方法)
答案 5 :(得分:4)
我最终使用了Bobjt和HaemEternal解决方案提案的混合物。
答案 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的命令行中手动执行脚本。
解压缩IPA存档。它将产生一个名为“有效负载”的文件夹。
unzip Foobar.ipa
读取嵌入式配置信息。请注意,有效载荷目录中的软件包/文件夹与.ipa相同,但带有.app扩展名。
security cms -Di Payload/Foobar.app/embedded.mobileprovision
在上述命令的输出中,证书被嵌入与键“ DeveloperCertificates”关联的数组数据元素中,作为base64字符串。 3.复制证书(不包括xml标记,并确保没有多余的空格),然后将其作为文本保存到方便的位置。在此示例中,我将其称为“ cert_from_foobar.txt”
Base64对已知证书进行编码,并将输出保存到文件中。
base64 barfoo.cer > barfoo.txt
将已知证书与您保存的嵌入式证书进行比较。
cmp cert_from_foobar.txt barfoo.txt || echo 'These files are NOT the same.'
如果它们相同,您将不会看到任何消息。