it-roy-ru.com

Как определить, какой профиль / сертификат подписи использовался для подписи .ipa?

У меня есть куча файлов .ipa, и я использовал скрипт для их отставки.

Так как же проверить профиль обеспечения/сертификат подписи, чтобы убедиться, что они используют правильную информацию?

В идеале я хотел бы иметь возможность взять любой файл .ipa и сообщить, какой профиль обеспечения/сертификат подписи использовался для его подписи.

Backstory: Срок действия нашего сертификата распространения корпоративного класса истекает, и я хочу переподписать наши материалы. Это просто взять все, что мы сделали и заархивировали в XCode, но для сторонних поставщиков, которые выпускают распространяемые файлы, я не могу этого сделать. Я хочу не просить повторно подписанный файл .ipa, потому что новый .ipa может включать неизвестные изменения и создавать проблемы, и они, вероятно, будут взимать плату с нас. тоже ... но меня больше волнует первый вопрос.

Поскольку и наши старые, и новые сертификаты распространения по-прежнему действительны (вы получаете 6-месячное перекрытие), я должен быть в состоянии подтвердить, что новый используется, в противном случае я бы выглядел очень глупо, когда истекает срок действия старого и "отказывающий" скрипт не работает. на самом деле делать работу.

48
DBD

Профили обеспечения имеют UUID, который можно увидеть с помощью команды "Терминал":

cms -D -i безопасности (path_to_your_provisioning_profile)

Смотрите раздел UUID вывода команды, например:

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

Xcode вставляет профиль обеспечения, используемый для подписи приложения в пакете .app. Чтобы найти его, переименуйте ваш .ipa в .Zip, распакуйте его с помощью Finder, найдите файл .app в/Payload. "Показать содержимое пакета" в файле .app и найти профиль обеспечения с именем embedded.mobileprovision.

Извлеките его права, используя приведенную выше команду, и сравните его с UUID, найденным в ваших профилях, на вашем Xcode Organizer> вкладка "Устройства"> "Профиль обеспечения" в разделе "Библиотека". Вы можете использовать "Показать в Finder", чтобы показать их местоположение на диске.

64
Bobjt

Поздно на вечеринку ....

Но этот инструмент экономит мне время: номад/шэньчжэнь

$ 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                                                        |
+-----------------------------+----------------------------------------------------------+
25
maersu

проверьте это: инструмент

Пространство касания файла IPA или профиля обеспечения покажет детали

enter image description here

17
Ted

Основываясь на ответе Bobjt, я использовал IPCU, чтобы получить подробную информацию о профиле:

  1. Переименуйте свой .ipa в .Zip
  2. Распакуйте его с Finder
  3. Найдите файл .app в/Payload.
  4. "Показать содержимое пакета" в файле .app и найдите профиль обеспечения с именем embedded.mobileprovision.

  5. Перетащите файл mobileprovisioning в программу настройки iPhone

IPCU показывает имя/срок действия и т.д. Профиля.

13
HaemEternal

Я смог успешно протестировать, используя следующий процесс.

  1. Установите оригинальный .ipa на устройство.
  2. Перейдите в Настройки-> Общие-> Профили (см. Старый профиль обеспечения)
  3. Удалить приложение и старый профиль с устройства
  4. В отставку приложение.
  5. Установите переподписанное приложение на устройстве
  6. Перейдите в Настройки-> Общие-> Профили (см. Новый профиль обеспечения)

Похоже, что это пуленепробиваемый способ подтвердить, что профиль обеспечения обновлен, и поскольку в профиле есть только 1 сертификат подписи ... тогда мы должны быть подписаны новым сертификатом.

(но я все еще хочу найти лучший способ)

4
DBD

В итоге я использовал смесь предложений от Bobjt и HaemEternal.

  1. Найти архив.
  2. Показать содержимое пакета.
  3. Скопируйте файл .app из
  4. Показать содержимое пакета .app-файла.
  5. Скопируйте внедренный .mobileprovision файл из.
  6. Запустите "Безопасность CMS -D -i (path_to_your_provisioning_profile)"
  7. Найдите номер UUID по результатам вызова на шаге 6.
  8. Откройте утилиту конфигурации Iphone и посмотрите на профили, чтобы найти тот, который имеет тот же номер UUID.
4
Lasse

Если вы пытаетесь определить, использовался ли определенный сертификат для подписи .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. Он создаст папку с именем "Payload".

    unzip Foobar.ipa

  2. Прочитайте встроенную информацию о предоставлении. Обратите внимание, что пакет/папка внутри каталога Payload назван так же, как .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.'

Если они одинаковы, вы не увидите ни одного сообщения.

1
Ron Sims II