CocoaHeads Rennes #6

4 894 vues

Publié le

Slides de la présentation "Signature et Distribution" de la session des CocoaHeads Rennais du 12 janvier 2012. Présentation assurée par Julien Quéré.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
4 894
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3 346
Actions
Partages
0
Téléchargements
20
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

CocoaHeads Rennes #6

  1. 1. Signature et distribution Sur iOSCocoaHeads Rennes #6 Julien Quéré 12 janvier 2012 julien@cocoaheads.fr
  2. 2. Agenda• Introduction• Les composants• Signer pour le développement• Signer pour la distribution• Distribuer• Trucs & astuces• Démo
  3. 3. Introduction
  4. 4. A quoi ça sert ?• Certifier l’identité du développeur• Gérer des droits d’accès• Limiter lexécution d’applications (programme payant)
  5. 5. Programmes dévelopeur iOS Developer Program iOS Developer Enterprise ProgramApp StoreIn HouseAd hoc(limité à 100 devices)Tarif $99 / an $299 / an
  6. 6. Les composants
  7. 7. Provisioning portal• Permet de gérer: • Certificats • UDID • Provisionings http://developer.apple.com/ios/manage/overview/
  8. 8. iTunes Connect• Notre backoffice de l’App Store https://itunesconnect.apple.com/
  9. 9. Clef privéeClef publique Certificats App ID Provisioning UDID
  10. 10. Clefs privée et publique• Paire de clefs RSA 2048 bits • Système de clef asymétrique • La clef privée est ... privée ! Salut Alice Salut Alice xwc8!*$EZAc xwc8!*$EZAc
  11. 11. Certificat• 2 types de certificats techniquement identiques (X.509): Développement Distribution
  12. 12. Le CSR• CSR: certificate signing request (PKCS#10): Nom + adresse email Chiffré avec la clef privée Clef publique En clair Anatomie d’un CSR
  13. 13. La génération• Avec le CSR, le provisioning portal génère un certificat• Il contient votre clef publique, nom et adresse email• Il est signé par la clef privée d’Apple Nom Adresse email Chiffré avec la clef privée Apple Clef publique Anatomie d’un certificat
  14. 14. Résumé CSRClef privée Clef publique Certificat Clef publique
  15. 15. App ID • Chaine de caractère identifiant une application (format reverse-DNS): Bundle Seed ID Bundle ID A1337CDP9A.fr.cocoaheads.demoApp➡Généré par Apple ➡Généré par les développeurs➡Unique ➡Modifiable➡Utilisé pour keychain et accessoires ➡Devrait être unique à chaque application
  16. 16. UDID• Identifiant unique de chaque appareil iOS: Unique Device IDentifier• 40 caractères (hexa)• Ajout via l’iOS Provisioning Portal ou l’Organizer de Xcode Nombre d’UDID limité à 100 pour une distribution Ad hoc
  17. 17. Le provisioning • Le provisioning associe: ➡ une ou plusieurs identités ➡ un App ID à matcher ➡ éventuellement: des UDIDLe provisioning dit: «telle application, signée par tel développeur peut êtreexécutée sur cet appareil»
  18. 18. Resumé Clef privée CertificatsClef publique App ID Provisioning UDID
  19. 19. Signer pour le développement
  20. 20. La stratégie générique• Le « provisioning générique de développement »: Toute l’équipe Tous les appareils iOS connus Utiliser un wildcard pour l’AppID: « com.cocoaheads.* » voire même « * »
  21. 21. Le wildcard• Consiste à terminer son AppID par une *• Signifie « n’importe quoi »• Permet de matcher plusieurs AppID ...A1664CDP9A.fr.cocoaheads.* A1664CDP9A.fr.cocoaheads.demoApp A1664CDP9A.fr.cocoaheads.example A1664CDP9A.fr.lacantine.cocoaheads
  22. 22. Le wildcard• Consiste à terminer son AppID par une *• Signifie « n’importe quoi »• Permet de matcher plusieurs AppID ... A1664CDP9A.* A1664CDP9A.fr.cocoaheads.demoApp A1664CDP9A.fr.cocoaheads.example A1664CDP9A.fr.lacantine.cocoaheads
  23. 23. Xcode s’occupe de tout• Xcode gère un « iOS Team Provisioning Profile: * »• Il tient à jour un provisioning avec: Toute l’équipe Tous les appareils iOS connus L’App ID: «bundleSeedID.*»• Tout se passe dans l’organizer ...
  24. 24. Problème• Le wildcard est inutilisable quand il faut identifier précisément l’application: • Push, • Game Center, • iCloud, • ...
  25. 25. La stratégie spécifique Créer un provisioning avec AppID spécifique Limiter les dévelopeurs Limiter les UDID➡Tout se passe sur le provisioning portal
  26. 26. Signer pour la distribution
  27. 27. Certificat de distribution• Fonctionnement strictement identique au certificat de développement• Unique pour chaque éditeur• Généré par le team agent
  28. 28. ProvisioningApp Store / In House Ad hoc
  29. 29. Configuration du projet• Vérifiez bien que vous signez avec une identité de distribution quand il le faut ...
  30. 30. La distribution
  31. 31. La distribution Ad hoc• Xcode: product / archive• Organizer / archives / share• Résultat: fichier IPA
  32. 32. La distribution Ad hoc• Glisser l’IPA dans iTunes• Ajouter l’application dans la synchronisation du device• Synchroniser• Attendre ...
  33. 33. La distribution OTA • Le principe: l’installation se fait grâce à un lien web ...itms-services://?action=download-manifest&url=http://foo.com/manifest.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> ! <key>items</key> ! <array> ! ! <dict> ! ! ! <key>assets</key> ! ! ! <array> ! ! ! ! <dict> ! ! ! ! ! <key>kind</key> ! ! ! ! ! <string>software-package</string> ! ! ! ! ! <key>url</key> ! ! ! ! ! <string>http://webd.fr/cocoaheads/DemoApp.ipa</string> ! <string>http://webd.fr/cocoaheads/DemoApp.ipa</string> ! ! ! ! </dict> ! ! ! </array> ! ! ! <key>metadata</key> ! ! ! <dict> ! ! ! ! <key>bundle-identifier</key> ! ! ! ! <string>fr.cocoaheads.DemoApp</string> ! ! ! ! <key>bundle-version</key> ! ! ! ! <string>1.0</string> ! ! ! ! <key>kind</key> ! ! ! ! <string>software</string> ! ! ! ! <key>title</key> ! ! ! ! <string>CocoHeads DemoApp</string> ! ! ! </dict> ! ! </dict> ! </array> </dict> </plist> ! !
  34. 34. La distribution OTA• Xcode: product / archive• Organizer / archives / share• Save for Entreprise Distribution• Résultat: fichier IPA et PLIST
  35. 35. La distribution OTA• Sur le device, lancer le lien: itms-services://? action=download-manifest&url=http://webd.fr/ cocoaheads/demoAppOTA.plist• Appuyer sur installer ... C’est fini.• Astuce: utilisez un QRCode !
  36. 36. L’App Store• Ajouter l’application sur iTunes Connect• Ready to Upload Binary• Xcode: product / archive• Organizer / archives / validate• Entrer les identifiants iTunes Connect• Sélectionnez l’application et le provisioning• Attendre ...• Corriger ... Et recommencer
  37. 37. L’App Store• Organizer / archives / submit• Entrer les identifiants iTunes Connect• Sélectionnez l’application et le provisioning• Attendre ...• C’est fini
  38. 38. Trucs & Astuces
  39. 39. Les sélecteurs automatiques
  40. 40. Anatomie d’un IPA• Ce n’est qu’une archive ZIP ...• Contient un APP ... Qui n’est qu’un dossier• Il contient: • Le binaire • Les ressources • Le provisioning
  41. 41. Voir le contenu d’un provisioning• Plug-in quicklook disponible ici: http://www.macmation.com/blog/ 2011/10/quicklook-plugin-for- mobile-provision-files/
  42. 42. Démo ?
  43. 43. julien@cocoaheads.fr CocoaHeads Rennes #6 thomas.dupont@cocoaheads.frSignature et distribution sur iOS Mail : julien@cocoaheads.fr Web : www.cocoaheads.fr Twitter : @CocoaHeadsRNS

×