Jak określić, który certyfikat profilu/podpisywania został użyty do podpisania.ipa?

Mam kilka .pliki ipa i użyłem skryptu do ich rezygnacji.

Jak więc sprawdzić, czy profil obsługi/certyfikat podpisywania są zgodne z poprawnymi informacjami?

Idealnie, chciałbym mieć możliwość wzięcia dowolnego .pliku IPA i powiedzieć, który profil/certyfikat podpisywania provisioning został użyty do jego podpisania.

Backstory: nasz certyfikat dystrybucji dla przedsiębiorstw traci ważność i chcę ponownie podpisać nasze rzeczy. To proste podejście do wszystkie rzeczy, które zrobiliśmy i zarchiwizowaliśmy w Xcode, ale dla dostawcy 3rd party made distributables nie mogę tego zrobić. Nie chcę prosić o ponowne podpisanie .plik ipa, ponieważ nowy .ipa może zawierać nieznane zmiany i wprowadzać problemy i prawdopodobnie nas też obciążą... ale bardziej martwię się pierwszą sprawą.

Ponieważ zarówno nasze stare jak i nowe certyfikaty dystrybucji są nadal ważne (masz nakładanie się 6 miesięcy) muszę być w stanie potwierdzić, że nowy jest używany, inaczej wyglądałbym naprawdę głupie, gdy stary wygasa i skrypt "rezygnujący"nie sprawdził się.

Author: Honey, 2013-02-14

6 answers

Profile obsługi mają identyfikator uuid, który można zobaczyć za pomocą polecenia Terminal:

Security cms-D-i (path_to_your_provisioning_profile)

Zobacz sekcję UUID wyjścia polecenia:

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

Xcode wstawia profil provisioning używany do podpisania aplikacji w ramach .pakiet aplikacji. Aby go znaleźć, Zmień nazwę swojego .ipa do .zip, rozpakuj go za pomocą Findera, znajdź .plik aplikacji w /Payload. "Pokaż Zawartość pakietu" na .plik aplikacji i znajdź profil provisioning o nazwie embedded.mobileprovision.

Zrzuć swoje uprawnienia za pomocą powyższego polecenia i porównaj je z identyfikatorem uuid znalezionym w Twoich profilach w Twoim Xcode Organizer > Zakładka urządzenia > Provisioning Profile sekcja pod "Biblioteka". Możesz użyć opcji "Pokaż w Finderze", aby wyświetlić ich lokalizację na dysku.

 73
Author: Bobjt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-04 00:41:12

Spóźnienie na imprezę....

Ale to narzędzie oszczędza mi trochę czasu: 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                                                        |
+-----------------------------+----------------------------------------------------------+

2020: Aktualizacja od opiekuna

Https://github.com/nomad/shenzhen/blob/master/README.md

Uwaga: shenzhen używa Xcode 6 Build API, który jest przestarzały od prawie 3 lat. Powoduje to problemy, jeśli aplikacja korzysta z Swift 3, watchOS i innych aplikacji docelowych.

Utrzymana alternatywa dla budowania iOS aplikacje to siłownia, która korzysta z najnowszego API Xcode. Aby rozpowszechniać buildy, możesz użyć fastlane. Więcej informacji o tym, jak zacząć, można znaleźć w Przewodniku wdrażania wersji Beta systemu iOS.

 26
Author: maersu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-01 07:03:16

Bazując na odpowiedzi Bobjta, użyłem IPCU, aby uzyskać szczegóły profilu:

  1. Zmień nazwę swojego .ipa do .zip
  2. rozpakuj go za pomocą Findera
  3. Znajdź .plik aplikacji w /Payload.
  4. "Pokaż Zawartość pakietu" na .plik aplikacji i znajdź profil aprowizacji z osadzoną nazwą.mobileprovision.

  5. Przeciągnij plik mobileprovisioning do narzędzia konfiguracyjnego iPhone ' a

IPCU pokazuje nazwę / datę ważności itp. profil.

 15
Author: HaemEternal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-21 14:53:07

W końcu skorzystałem z mieszanki propozycji rozwiązań Bobjt i HaemEternal.

  1. Znajdź archiwum.
  2. Pokaż Zawartość pakietu.
  3. Zrozumiałem .plik aplikacji out
  4. Pokaż Zawartość pakietu .plik aplikacji.
  5. Kopia osadzona.plik mobileprovision out.
  6. Uruchom "security cms - D-i (path_to_your_provisioning_profile)"
  7. Znajdź numer UUID z wyniku połączenia w kroku 6.
  8. Otwórz narzędzie konfiguracyjne Iphone ' a i spójrz na profile, aby znaleźć taki, który ma ten sam numer UUID.
 5
Author: Lasse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-26 05:08:27

Udało mi się pomyślnie przetestować za pomocą następującego procesu.

  1. Zainstaluj oryginał .ipa na urządzeniu.
  2. Przejdź do Ustawienia->Ogólne - > profile (Zobacz stary profil provisioning)
  3. Usuń aplikację i stary profil z urządzenia
  4. Zrezygnuj z aplikacji.
  5. Zainstaluj ponownie podpisaną aplikację na urządzeniu
  6. Przejdź do Ustawienia->Ogólne - > profile (Zobacz nowy profil provisioning)

Wydaje się to być bullet-proof sposób, aby potwierdzić profil provisioning został zaktualizowany i ponieważ profil ma tylko 1 certyfikat podpisywania w nim... więc musimy podpisać kontrakt z nowym cert.

(but I still want to find a better way)

 4
Author: DBD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-14 19:48:16

Jeśli próbujesz ustalić, czy dany certyfikat został użyty do podpisania an .ipa, można wykonać następujące czynności:

Jeśli czujesz się komfortowo w Pythonie, możesz użyć tego stworzonego przeze mnie skryptu do porównania certyfikatów osadzonych w .ipa do jednego, który masz.

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

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

Alternatywnie, możesz zrobić to, co skrypt robi ręcznie z linii poleceń twojego Mac.

  1. Rozpakuj archiwum IPA. Utworzy folder o nazwie "Payload".

    unzip Foobar.ipa

  2. Odczytaj informacje o osadzonej konfiguracji. Uwaga Pakiet / folder wewnątrz katalogu Payload ma taką samą nazwę jak the .ipa z wyjątkiem .rozszerzenie aplikacji.

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

Na wyjściu powyższego polecenia certyfikaty są osadzone w elementach danych tablicy powiązanych z kluczem "DeveloperCertificates" jako base64 sznurek. 3. Skopiuj certyfikat(y) (nie dołączaj znaczników xml i upewnij się, że nie ma dodatkowych białych znaków) i zapisz je w dogodnej lokalizacji jako tekst. W tym przykładzie nazwę go " cert_from_foobar.txt "

  1. Base64 zakoduje znany certyfikat i zapisuje wyjście do pliku.

    base64 barfoo.cer > barfoo.txt

  2. Porównaj znany certyfikat z osadzonym certyfikatem, który zapisałeś. cmp cert_from_foobar.txt barfoo.txt || echo 'These files are NOT the same.'

Jeśli są takie same ty nie zobaczysz żadnego wiadomość.

 1
Author: Ron Sims II,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-19 13:43:44