2013-02-14 9 views
39

Ho un sacco di file .ipa e ho usato uno script di dimettersi loro.Come sapere quale profilo/certificato di firma è stato utilizzato per firmare .ipa?

Quindi, come è possibile controllare il profilo di provisioning/certificato di firma per conformarsi utilizzando le informazioni corrette?

Idealmente, mi piacerebbe essere in grado di prendere qualsiasi file .ipa e dire quale profilo di provisioning/certificato di firma è stato utilizzato per firmarlo.

Backstory: Il certificato di distribuzione aziendale è in scadenza e desidero firmare nuovamente i nostri contenuti. È un modo semplice per tutte le cose che abbiamo creato e archiviato in Xcode, ma per i prodotti distribuiti di terze parti non posso farlo. Voglio evitare di chiedere un file .ipa riscritto perché un nuovo .ipa potrebbe includere modifiche sconosciute e introdurre problemi e probabilmente farebbero pagare anche a noi ... ma sono più preoccupato per il primo problema.

Poiché i nostri vecchi e nuovi certificati di distribuzione sono ancora validi (si ottiene una sovrapposizione di 6 mesi) Devo essere in grado di confermare che viene utilizzato il nuovo altrimenti sarei davvero stupido quando scadrà il vecchio e il "dimettersi" "La sceneggiatura in realtà non ha funzionato.

risposta

55

Profili di fornitura hanno un UUID che può essere visto utilizzando il comando del Terminale:

security cms -D -i (path_to_your_provisioning_profile)

Vedere la sezione UUID dell'output del comando del tipo:

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

Xcode inserisce il profilo di provisioning usata per firmare l'applicazione all'interno del pacchetto .app. Per trovarlo, rinomina il tuo .ipa in .zip, decomprimilo con Finder, trova il file .app in/Payload. "Mostra contenuto pacchetto" nel file .app e trova il profilo di provisioning con il nome embedded.mobileprovision.

Esegui il dump dei diritti utilizzando il comando precedente e confrontalo con l'UUID trovato nei tuoi profili in Xcode Organizer> scheda Dispositivi> sezione Profilo di provisioning in "Libreria". Puoi usare "Mostra nel Finder" su quelli per rivelare la loro posizione su disco.

+0

Questo è stato un dolore per testare per iniziare, ma ho scritto uno script che prende un .ipa tira fuori il nome del profilo di provisioning e controllare la data di scadenza così sarò in grado di automatizzare questo per il test più veloce. Quindi per me ... questa sarà una soluzione migliore. – DBD

+0

Tale riga di comando restituisce l'output: "sicurezza: impossibile aggiungere dati al decoder: UNKNOWN (-8183 (d) Errore bus: 10" – Adam

+0

Adam: assicurarsi di decodificare embedded.mobileprovision e non l'ipa stesso. – BuvinJ

4

Sono stato in grado di testare con successo utilizzando il seguente processo.

  1. Installare originale .ipa sul dispositivo.
  2. Vai a Impostazioni-> Generale-> Profili (vedi vecchio profilo di provisioning)
  3. Elimina app e vecchio profilo da dispositivo
  4. Resign app.
  5. Installare ri-firmato app sul dispositivo
  6. Vai a Impostazioni-> Generale-> Profili (vedi nuovo profilo di provisioning)

Questo sembra essere un modo a prova di proiettile per confermare il profilo di provisioning è stato aggiornato e dal momento che il profilo ha solo il certificato di firma 1 in esso ... quindi dobbiamo essere firmati con il nuovo certificato.

(ma ho ancora voglia di trovare un modo migliore)

13

in base alla risposta del Bobjt, ho usato IPCU per ottenere i dettagli del profilo:

  1. Rinominare il .ipa in .zip
  2. decomprimerlo con il Finder
  3. Trovare il file .app in/Carico utile.
  4. "Mostra contenuto pacchetto" per il file .app e trovare il profilo di provisioning con il nome embedded.mobileprovision.

  5. trascinare il file mobileprovisioning in Utility Configurazione iPhone

IPCU mostra la Data Nome/scadenza etc del profilo.

+0

Se non mi sbaglio questo strumento non funziona con iOS> = 8 – gnichola

+0

@gnichola non è necessario collegare un iPad/iPhone per seguire questi passaggi, quindi la versione di iOS dovrebbe essere irrilevante. – HaemEternal

+0

Credo che il mio commento avrebbe potuto essere più chiaro, se hai lo strumento che potresti usare, il mio problema era che poiché lo strumento era per una versione precedente del sistema operativo, non è più disponibile, o almeno quando lo stavo cercando Non riuscivo a trovarlo. – gnichola

4

ho finito per usare una miscela di soluzioni Bobjt e HaemEternal proposte.

  1. Trova archivio.
  2. Mostra contenuto del pacchetto.
  3. Copia .app file out
  4. Mostra il contenuto del pacchetto del file .app.
  5. Copia il file embedded.mobileprovision.
  6. "CMS sicurezza -D -i (path_to_your_provisioning_profile)"
  7. Run
  8. Trova il numero UUID dal risultato della chiamata di in fase di utilità 6.
  9. Aprire Iphone configurazione e guardare i profili per trovare quello che ha lo stesso numero UUID.
24

in ritardo alla festa ....

Ma questo strumento mi fa risparmiare un po 'di tempo: 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              | 
+-----------------------------+----------------------------------------------------------+ 
13

controllo questo: tool

Toccando lo spazio su un file IPA o di provisioning profilo mostrerà i dettagli

enter image description here

Problemi correlati