web-dev-qa-db-fra.com

Comment savoir quel profil / certificat de signature a été utilisé pour signer .ipa?

J'ai un tas de fichiers .ipa et j'ai utilisé un script pour les démissionner.

Alors, comment vérifier le profil d'approvisionnement/le certificat de signature pour vérifier qu'ils utilisent les bonnes informations?

Idéalement, j'aimerais pouvoir prendre n'importe quel fichier .ipa et dire quel profil d'approvisionnement/certificat de signature a été utilisé pour le signer.

Backstory: Notre certificat de distribution d'entreprise expire et je veux re-signer nos trucs. C'est une prise simple pour toutes les choses que nous avons créées et archivées dans Xcode, mais pour les distributables fabriqués par des fournisseurs tiers, je ne peux pas le faire. Je veux éviter de demander un fichier .ipa re-signé car un nouveau .ipa pourrait inclure des changements inconnus et introduire des problèmes et ils nous factureraient probablement aussi ... mais je suis plus préoccupé par le premier problème.

Étant donné que nos anciens et nouveaux certificats de distribution sont toujours valides (vous obtenez un chevauchement de 6 mois), je dois pouvoir confirmer que le nouveau est utilisé, sinon je serais vraiment idiot quand l'ancien expirera et que le script de "démission" ne fonctionnera pas. t vraiment faire le travail.

48
DBD

Les profils d'approvisionnement ont un UUID visible à l'aide de la commande Terminal:

cms de sécurité -D -i (path_to_your_provisioning_profile)

Voir la section UUID de la sortie de commande comme:

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

Xcode insère le profil d'approvisionnement utilisé pour signer l'application dans le bundle .app. Pour le trouver, renommez votre .ipa en .Zip, décompressez-le avec le Finder, recherchez le fichier .app dans/Payload. "Afficher le contenu du package" dans le fichier .app et recherchez le profil d'approvisionnement avec le nom embedded.mobileprovision.

Vider ses droits à l'aide de la commande ci-dessus et comparer cela avec l'UUID trouvé dans vos profils dans votre organiseur Xcode> onglet Périphériques> section Profil de provisioning sous "Bibliothèque". Vous pouvez utiliser "Afficher dans le Finder" sur ceux-ci pour révéler leur emplacement sur le disque.

64
Bobjt

Tard à la fête ....

Mais cet outil me fait gagner du temps: nomade/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                                                        |
+-----------------------------+----------------------------------------------------------+
25
maersu

vérifiez ceci: outil

Taper de l'espace sur un fichier IPA ou un profil d'approvisionnement affichera les détails

enter image description here

17
Ted

Sur la base de la réponse de Bobjt, j'ai utilisé IPCU pour obtenir les détails du profil:

  1. Renommez votre .ipa en .Zip
  2. Décompressez-le avec le Finder
  3. Recherchez le fichier .app dans/Payload.
  4. "Afficher le contenu du package" dans le fichier .app et recherchez le profil d'approvisionnement avec le nom embedded.mobileprovision.

  5. Faites glisser le fichier mobileprovisioning dans l'utilitaire de configuration iPhone

IPCU affiche le nom/la date d'expiration, etc. du profil.

13
HaemEternal

J'ai pu tester avec succès en utilisant le processus suivant.

  1. Installez le .ipa d'origine sur l'appareil.
  2. Accédez à Paramètres-> Général-> Profils (voir l'ancien profil d'approvisionnement)
  3. Supprimer l'application et l'ancien profil de l'appareil
  4. Démissionnez l'application.
  5. Installer l'application re-signée sur l'appareil
  6. Accédez à Paramètres-> Général-> Profils (voir le nouveau profil d'approvisionnement)

Cela semble être un moyen à toute épreuve de confirmer que le profil d'approvisionnement a été mis à jour et puisque le profil ne contient que le certificat de signature 1 ... alors nous devons être signés avec le nouveau certificat.

(mais je veux toujours trouver un meilleur moyen)

4
DBD

J'ai fini par utiliser un mélange de propositions de solutions Bobjt et HaemEternal.

  1. Trouver des archives.
  2. Afficher le contenu du package.
  3. Copier le fichier .app
  4. Afficher le contenu du package du fichier .app.
  5. Copiez le fichier embedded.mobileprovision.
  6. Exécutez "security cms -D -i (path_to_your_provisioning_profile)"
  7. Recherchez le numéro UUID à partir du résultat de l'appel à l'étape 6.
  8. Ouvrez l'utilitaire de configuration Iphone et regardez les profils pour trouver celui qui a le même numéro UUID.
4
Lasse

Si vous essayez de déterminer si un certificat spécifique a été utilisé pour signer un .ipa, vous pouvez effectuer les opérations suivantes:

Si vous êtes à l'aise avec python, vous pouvez utiliser ce script que j'ai créé pour comparer le (s) certificat (s) intégré (s) dans le .ipa à celui que vous avez.

https://Gist.github.com/ronsims2/1b7a8b9e15898f9406788988106b2f78

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

Alternativement, vous pouvez faire ce que le script fait manuellement depuis la ligne de commande de votre Mac.

  1. Décompressez l'archive IPA. Il produira un dossier appelé "Payload".

    unzip Foobar.ipa

  2. Lisez les informations de provisionnement intégrées. Notez que le package/dossier à l'intérieur du répertoire Payload porte le même nom que le .ipa, sauf avec l'extension .app.

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

Dans la sortie de la commande ci-dessus, le ou les certificats sont incorporés dans les éléments de données du tableau associés à la clé "DeveloperCertificates" en tant que chaîne base64. 3. Copiez le (s) certificat (s) (n'incluez pas les balises xml et assurez-vous qu'il n'y a pas d'espace blanc supplémentaire) et enregistrez-les dans un emplacement pratique sous forme de texte. Dans cet exemple, je l'appellerai "cert_from_foobar.txt"

  1. Base64 encode le certificat connu et enregistre la sortie dans un fichier.

    base64 barfoo.cer > barfoo.txt

  2. Comparez le certificat connu à celui que vous avez enregistré. cmp cert_from_foobar.txt barfoo.txt || echo 'These files are NOT the same.'

S'ils sont identiques, vous ne verrez aucun message.

1
Ron Sims II