4. A quoi ça sert ?
• Certifier l’identité du développeur
• Gérer des droits d’accès
• Limiter l'exécution d’applications (programme payant)
5. Programmes dévelopeur
iOS Developer Program iOS Developer
Enterprise Program
App Store
In House
Ad hoc
(limité à 100 devices)
Tarif $99 / an $299 / an
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. Certificat
• 2 types de certificats techniquement identiques (X.509):
Développement Distribution
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. 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
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. 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. Le provisioning
• Le provisioning associe:
➡ une ou plusieurs identités
➡ un App ID à matcher
➡ éventuellement: des UDID
Le provisioning dit: «telle application, signée par tel développeur peut être
exécutée sur cet appareil»
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. 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. 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. 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. Problème
• Le wildcard est inutilisable quand il faut identifier précisément
l’application:
• Push,
• Game Center,
• iCloud,
• ...
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
27. Certificat de distribution
• Fonctionnement strictement identique au certificat de développement
• Unique pour chaque éditeur
• Généré par le team agent
34. La distribution OTA
• Xcode: product / archive
• Organizer / archives / share
• Save for Entreprise Distribution
• Résultat: fichier IPA et PLIST
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. 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. L’App Store
• Organizer / archives / submit
• Entrer les identifiants iTunes
Connect
• Sélectionnez l’application et le
provisioning
• Attendre ...
• C’est fini
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. Voir le contenu d’un provisioning
• Plug-in quicklook disponible ici:
http://www.macmation.com/blog/
2011/10/quicklook-plugin-for-
mobile-provision-files/
43. julien@cocoaheads.fr
CocoaHeads Rennes #6 thomas.dupont@cocoaheads.fr
Signature et distribution sur iOS
Mail : julien@cocoaheads.fr
Web : www.cocoaheads.fr
Twitter : @CocoaHeadsRNS