Profil de Provisionnement : ce qu’il est, ses types et son fonctionnement

Auteur : IT Sectr Publié le : 2026-04-16 Temps de lecture : 10 min

Le Profil de Provisionnement relie les certificats du développeur, l’identifiant de l’application et une liste d’appareils autorisés pour la signature de code des applications iOS. Selon la Apple Developer Documentation, 2026, le profil est nécessaire pour tout lancement d’application sur un appareil physique — sans lui Xcode ne peut pas installer un build sur un iPhone ou un iPad. Cet article aborde la structure, les types et le processus de création des profils.

Points Clés

  • Profil de Provisionnement — fichier de configuration Apple qui combine certificat, App ID et appareils pour la signature de code
  • Development est utilisé pour les tests sur appareils physiques pendant le développement
  • Distribution se divise en App Store, Ad Hoc et Enterprise pour différents scénarios de publication
  • App ID identifie de manière unique l’application dans l’écosystème Apple et est lié au Bundle Identifier
  • Entitlements définissent l’accès de l’application aux fonctionnalités système : notifications Push, iCloud, App Groups

Qu’est-ce qu’un Profil de Provisionnement

Un Profil de Provisionnement est un fichier de configuration numérique au format .mobileprovision (pour iOS) ou .provisionprofile (pour macOS) qu’Apple utilise pour contrôler l’installation et l’exécution des applications sur les appareils. Le profil contient des métadonnées de signature de code, sans lesquelles une application ne peut pas être exécutée sur un iPhone, iPad ou Apple Watch physique — le simulateur ne nécessite pas de profil car le code n’est pas signé pour s’exécuter sur un processeur réel.

Le profil est délivré via le Apple Developer Portal et a une date d’expiration — généralement un an pour les profils Development et Distribution. Selon la politique d’Apple, le profil est automatiquement lié au certificat Apple Developer Program sous lequel il a été signé : si le certificat est révoqué ou expire, le profil cesse de fonctionner.

Chaque profil contient un UUID unique que Xcode utilise pour identifier le profil dans le trousseau. Xcode sélectionne automatiquement le profil approprié lors de la compilation, mais le développeur peut remplacer ce choix dans les paramètres Signing & Capabilities. Un nombre illimité de profils peut être installé sur un seul appareil — le système de gestion des appareils mobiles (MDM) d’Apple utilise cela pour la distribution d’applications en entreprise.

Pourquoi un Profil de Provisionnement est nécessaire

La signature de code est la principale raison d’être des profils. Apple exige que chaque application exécutée sur un appareil iOS soit signée avec un certificat émis par Apple. Le Profil de Provisionnement agit comme un lien : il confirme que le développeur a le droit d’exécuter l’application sur cet appareil. Selon le Apple Security Guide (2025), le mécanisme de profil empêche l’installation de logiciels malveillants sur les appareils des utilisateurs même en cas de compromission du certificat du développeur.

Le profil détermine également les services système disponibles pour l’application. Si l’application utilise les notifications Push, Apple Push Notification service (APNs) nécessite des entitlements corrects dans le profil. Sans cela, les notifications du serveur ne seront pas délivrées à l’appareil. La même règle s’applique à iCloud, App Groups, Wallet, HealthKit et aux autres frameworks Apple.

Différence avec un certificat

Les développeurs confondent souvent Profil de Provisionnement et Certificat Apple. Un certificat est un document numérique qui confirme l’identité (qui signe), tandis qu’un profil est une configuration (quelle application, sur quels appareils, avec quelles autorisations). Un même certificat peut être utilisé dans plusieurs profils, et un profil est lié à exactement un certificat. Apple recommande de créer un profil séparé pour chaque application et chaque scénario — Development, Ad Hoc, App Store.

Comment fonctionne un Profil de Provisionnement

Le processus de signature de l’application comprend plusieurs étapes séquentielles. Xcode prend le binaire de l’application (App Bundle), le signe avec la clé privée du développeur, intègre le Profil de Provisionnement et l’envoie à l’appareil. L’appareil vérifie la signature avec la clé publique d’Apple, compare l’UUID du profil avec la liste des profils de confiance dans le système et lance l’application uniquement si toutes les vérifications réussissent.

Lorsqu’un utilisateur télécharge une application depuis l’App Store, le mécanisme diffère. App Store Connect re-signe l’application avec son propre certificat Distribution d’Apple, remplaçant le profil du développeur par un profil Store. Cela signifie qu’une application publiée via l’App Store est techniquement signée par Apple, pas par le développeur — bien que la signature originale du développeur soit vérifiée lors du téléchargement du build dans App Store Connect.

Pour la distribution Ad Hoc, le profil enregistre des UDID d’appareils spécifiques sur lesquels l’application est autorisée à s’exécuter. Un compte gratuit Apple Developer Programme limite les tests à 100 appareils par an. Les profils Enterprise (pour la distribution interne dans une organisation) n’ont pas de limite d’appareils mais nécessitent un abonnement actif Apple Developer Enterprise Program à 299 $ par an.

Cycle de vie du profil

La période de validité d’un Profil de Provisionnement est d’un an à compter de sa création. 30 jours avant l’expiration, Apple commence à envoyer des notifications push au développeur via Xcode et le Developer Portal. Si le profil expire, une application déjà installée continue de fonctionner, mais un nouveau build ne peut pas être installé avec ce profil. Xcode génère une erreur de signature de code avec le code -402620394 lorsqu’il tente de compiler avec un profil expiré. Apple recommande de configurer le renouvellement automatique des profils via Xcode Accounts Preferences — Xcode renouvelle alors le profil 24 heures avant l’expiration.

Types de Profils de Provisionnement

Apple propose quatre types principaux de Profils de Provisionnement, chacun conçu pour une étape spécifique du cycle de vie de l’application. Le profil Development permet d’exécuter l’application sur des appareils physiques ajoutés au Apple Developer Portal et est utilisé pendant le développement et les tests QA. Un compte développeur Apple gratuit suffit pour créer un profil Development.

Le profil Ad Hoc est conçu pour distribuer une application à un groupe limité de testeurs sans utiliser l’App Store. Le profil enregistre jusqu’à 100 appareils par UDID, et l’application peut être installée directement via iTunes, Apple Configurator ou des solutions MDM. Les builds Ad Hoc ont une période de validité de 12 mois et ne nécessitent pas de révision Apple.

Le profil App Store est utilisé exclusivement pour publier l’application sur l’App Store et ne contient pas de liste d’appareils — Apple elle-même gère la distribution après l’approbation du build. Lors du téléchargement d’une archive dans App Store Connect, Xcode utilise automatiquement le profil App Store s’il est installé sur le système. Le profil Enterprise est destiné aux organisations disposant d’Apple Developer Enterprise Program et permet la distribution interne d’applications sans limite d’appareils ni révision Apple.

Type de profilObjectifAppareilsCoût de l’abonnement
DevelopmentDéveloppement et testsJusqu’à 100 UDIDsGratuit / 99 $ par an
Ad HocDistribution aux testeursJusqu’à 100 UDIDs99 $ par an
App StorePublication sur l’App StoreQuelconque (via Apple)99 $ par an
EnterpriseDistribution interneIllimité299 $ par an

Structure d’un Profil de Provisionnement

Un Profil de Provisionnement est un fichier au format DER signé par Apple, dont le contenu peut être consulté via la ligne de commande. Security framework de macOS permet de décoder .mobileprovision en un plist XML lisible. À l’intérieur du profil se trouvent : l’UUID du profil, l’App ID (préfixe d’équipe + Bundle Identifier), la liste des certificats, la liste des appareils autorisés (pour Development et Ad Hoc uniquement), les entitlements et la date d’expiration.

App ID est un identifiant unique d’application composé d’un Team ID (10 caractères attribués par Apple) et d’un Bundle Identifier (par exemple, com.example.myapp). Un App ID peut être explicite (correspondance exacte avec Bundle Identifier) ou wildcard (modèle *.example.com pour plusieurs applications). Apple ne recommande pas d’utiliser le wildcard pour les applications utilisant les notifications Push ou iCloud — ces services nécessitent un App ID explicite.

Entitlements est un bloc XML dans le profil qui définit les droits d’accès de l’application aux ressources système. Les entitlements typiques incluent : aps-environment (notifications Push), com.apple.developer.icloud-services (iCloud), com.apple.security.application-groups (App Groups pour Widget et Share Extension). Apple ajoute automatiquement des entitlements au profil en fonction des Capabilities activées dans Xcode. Toute discordance entre les entitlements du profil et ceux demandés dans le code entraîne une erreur de signature.

Création d’un Profil de Provisionnement dans Apple Developer

La création d’un profil est possible de deux manières : via l’interface web du Apple Developer Portal ou automatiquement via Xcode. Pour un projet typique, Xcode gère les profils automatiquement avec l’option Automatically manage signing activée. Xcode crée un certificat, un profil et un App ID en quelques secondes, en se synchronisant avec le Apple Developer Portal. Cependant, les pipelines CI/CD nécessitent une gestion manuelle.

Pour créer un profil manuellement dans le Apple Developer Portal : allez dans Certificates, Identifiers & Profiles, sélectionnez Profiles et appuyez sur "+". Sélectionnez ensuite le type de profil (Development, Ad Hoc, App Store ou Enterprise), sélectionnez un App ID dans la liste enregistrée, sélectionnez un certificat de développeur et (pour Development et Ad Hoc) sélectionnez des appareils. Après la création, le profil est téléchargé au format .mobileprovision et installé par double-clic dans Xcode.

Les serveurs CI/CD nécessitent une approche spéciale : le profil et le certificat doivent être stockés dans un dépôt sécurisé (par exemple, dans les secrets GitHub Actions). Lors de la compilation, le profil est chargé sur l’agent, placé dans le dossier ~/Library/MobileDevice/Provisioning Profiles, et le certificat est importé dans le trousseau. Fastlane — un outil populaire pour l’automatisation de la signature — fournit la commande match, qui synchronise les profils et certificats entre les développeurs via un dépôt git chiffré.

Exemple : vérification d’un profil en ligne de commande

Pour diagnostiquer les problèmes de signature de code, vous pouvez décoder le .mobileprovision et vérifier son contenu. La commande ci-dessous extrait le plist XML du profil et l’enregistre dans un format lisible :

bash
# Décodage de .mobileprovision en XML
security cms -D -i "path/to/embedded.mobileprovision" \
  -o "profile.plist"

# Vérification de la date d’expiration du profil
plist -convert xml1 profile.plist -o -
grep -A 1 "ExpirationDate" profile.plist

L’utilitaire Security de macOS Command Line Tools décode le fichier de profil signé CMS. Le drapeau -D signifie décodage, -i spécifie le fichier d’entrée. Après le décodage, l’utilitaire plist convertit le plist binaire en XML, et grep extrait la date d’expiration. Cette méthode est utile en CI/CD pour vérifier que le profil n’est pas expiré avant de compiler une version.

Erreurs courantes avec les Profils de Provisionnement

L’erreur la plus courante est "No matching provisioning profiles found" lors de la compilation dans Xcode. Elle se produit lorsque Xcode ne trouve pas de profil correspondant à la configuration de compilation : le Bundle Identifier ne correspond pas à l’App ID dans le profil, le certificat n’est pas installé dans le trousseau ou le profil a expiré. La solution — vérifiez les paramètres Signing & Capabilities dans la cible et, si nécessaire, passez à Automatically manage signing.

L’erreur "Provisioning profile doesn't include the selected device" apparaît lorsqu’on tente d’exécuter un build Development ou Ad Hoc sur un appareil dont l’UDID n’a pas été ajouté au profil. Le Apple Developer Portal permet d’ajouter un appareil à un profil existant — après cela, le profil doit être téléchargé et réinstallé. Xcode avec la gestion automatique de la signature ajoute automatiquement l’appareil connecté au profil.

Un problème avec les entitlements se manifeste par l’erreur "The executable was signed with invalid entitlements" lors du téléchargement dans App Store Connect. La cause est une discordance entre les entitlements du profil et ceux du fichier .entitlements du projet. Apple exige que l’ensemble des droits dans le profil soit un sur-ensemble des droits demandés par l’application. La solution — vérifiez les Capabilities dans la cible Xcode et assurez-vous que tous les services activés ont des entitlements correspondants dans le profil. Fastlane inclut la commande produce, qui synchronise les App IDs et profils avec les entitlements actuels.

Questions Fréquentes

Peut-on utiliser un même Profil de Provisionnement pour plusieurs applications ?

Oui, si l’App ID dans le profil utilise un identifiant wildcard de la forme com.example.*. Cependant, les profils wildcard ne prennent pas en charge les notifications Push, iCloud, Game Center et App Groups. Apple recommande de créer un profil explicite séparé pour chaque application utilisant des Capabilities avancées.

Que se passe-t-il si le Profil de Provisionnement expire mais que l’application est déjà sur l’App Store ?

Une application téléchargée via l’App Store utilise le profil Store d’Apple, qui est indépendant du profil du développeur. Les utilisateurs peuvent continuer à télécharger et exécuter l’application. Un profil expiré empêche seulement le téléchargement d’un nouveau build dans App Store Connect — Apple exige que le profil Distribution soit valide au moment de la soumission.

Comment transférer un Profil de Provisionnement vers un autre ordinateur ?

Le profil peut être copié dans le dossier ~/Library/MobileDevice/Provisioning Profiles sur le nouvel ordinateur. Cependant, le profil est lié à un certificat dont la clé privée se trouve dans le trousseau. Vous devez également exporter le certificat avec sa clé privée via Keychain Access et l’importer sur le nouvel appareil.

Combien de Profils de Provisionnement peut-il y avoir sur un même ordinateur ?

Il n’y a pas de limite quant au nombre de profils sur un ordinateur. Les profils sont stockés dans ~/Library/MobileDevice/Provisioning Profiles et sont identifiés par UUID. Xcode sélectionne automatiquement le profil approprié en fonction de l’App ID et du type de build. Pour simplifier la gestion, il est recommandé de supprimer les profils inutilisés via Xcode Accounts Preferences.

Quelle est la différence entre un Profil de Provisionnement et un Certificat de Signature ?

Un Certificat de Signature confirme l’identité du développeur — c’est une clé cryptographique émise par Apple. Un Profil de Provisionnement est un fichier de configuration qui spécifie quelle application (App ID) peut être exécutée sous quel certificat et sur quels appareils. Le profil fait toujours référence à un certificat spécifique, mais ne le remplace pas.

Résumé

  • Profil de Provisionnement — composant obligatoire de la signature des applications iOS, liant certificat, App ID et appareils
  • Development est utilisé pour les tests sur appareils physiques avec enregistrement des UDIDs
  • App Store est utilisé pour la publication et ne contient pas de liste d’appareils — Apple gère la distribution
  • Ad Hoc permet de distribuer l’application à 100 testeurs sans l’App Store
  • Enterprise est destiné à la distribution en entreprise sans limite d’appareils
  • Entitlements dans le profil définissent l’accès de l’application aux services système Apple
  • CI/CD nécessite le stockage des profils dans un dépôt sécurisé avec Fastlane ou des outils similaires

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi