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ę.
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.
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.
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:
- 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 aprowizacji z osadzoną nazwą.mobileprovision.
-
Przeciągnij plik mobileprovisioning do narzędzia konfiguracyjnego iPhone ' a
IPCU pokazuje nazwę / datę ważności itp. profil.
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.
- Znajdź archiwum.
- Pokaż Zawartość pakietu. Zrozumiałem .plik aplikacji out
- Pokaż Zawartość pakietu .plik aplikacji.
- Kopia osadzona.plik mobileprovision out.
- Uruchom "security cms - D-i (path_to_your_provisioning_profile)"
- Znajdź numer UUID z wyniku połączenia w kroku 6.
- Otwórz narzędzie konfiguracyjne Iphone ' a i spójrz na profile, aby znaleźć taki, który ma ten sam numer UUID.
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.
- Zainstaluj oryginał .ipa na urządzeniu.
- Przejdź do Ustawienia->Ogólne - > profile (Zobacz stary profil provisioning)
- Usuń aplikację i stary profil z urządzenia
- Zrezygnuj z aplikacji.
- Zainstaluj ponownie podpisaną aplikację na urządzeniu
- 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)
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.
-
Rozpakuj archiwum IPA. Utworzy folder o nazwie "Payload".
unzip Foobar.ipa
-
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 "
-
Base64 zakoduje znany certyfikat i zapisuje wyjście do pliku.
base64 barfoo.cer > barfoo.txt
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ść.
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