Provisioning Profile: wat is het, welke typen zijn er en hoe werkt het

Auteur: IT Sectr Gepubliceerd: 2026-04-16 Leestijd: 10 min

Een Provisioning Profile koppelt de certificaten van de ontwikkelaar, de applicatie-identificatie en de lijst van toegestane apparaten voor het ondertekenen van de code van iOS-apps. Volgens gegevens van Apple Developer Documentation, 2026 is een profiel nodig voor elke start van een app op een fysiek apparaat — zonder dit kan Xcode de build niet op een iPhone of iPad installeren. In dit artikel bespreken we de structuur, typen en het proces van het aanmaken van profielen.

Belangrijkste punten

  • Provisioning Profile — een Apple-configuratiebestand dat certificaat, App ID en apparaten combineert voor code-ondertekening
  • Een Development-profiel wordt gebruikt voor testen op fysieke apparaten tijdens de ontwikkeling
  • Een Distribution-profiel is onderverdeeld in App Store, Ad Hoc en Enterprise voor verschillende publicatiescenario's
  • App ID identificeert de app uniek in het Apple-ecosysteem en is gekoppeld aan de Bundle Identifier
  • Entitlements bepalen de toegang van de app tot systeemfuncties: pushmeldingen, iCloud, App Groups

Wat is een Provisioning Profile

Provisioning Profile is een digitaal configuratiebestand in het .mobileprovision-formaat (voor iOS) of .provisionprofile (voor macOS) dat Apple gebruikt om de installatie en start van apps op apparaten te controleren. Het profiel bevat de metadata voor code-ondertekening zonder welke de app niet kan worden gestart op een fysieke iPhone, iPad of Apple Watch — de simulator vereist geen profiel, omdat de code niet wordt ondertekend voor uitvoering op een echte processor.

Het profiel wordt uitgegeven via Apple Developer Portal en heeft een geldigheidsduur — meestal één jaar voor Development- en Distribution-profielen. Volgens het Apple-beleid wordt het profiel automatisch gekoppeld aan het certificaat van het Apple Developer Program waarmee het is ondertekend: als het certificaat wordt ingetrokken of verloopt, stopt het profiel met werken.

Elk profiel bevat een unieke UUID die Xcode gebruikt om het profiel in de sleutelhanger te identificeren. Xcode selecteert automatisch het juiste profiel tijdens het bouwen, maar de ontwikkelaar kan de selectie wijzigen in de instellingen Signing & Capabilities. Op één apparaat kan een onbeperkt aantal profielen worden geïnstalleerd — het apparaatbeheersysteem van Apple (MDM) gebruikt dit voor bedrijfsdistributie van apps.

Waarvoor dient een Provisioning Profile

Code-ondertekening is de belangrijkste reden voor het bestaan van profielen. Apple vereist dat elke app die op een iOS-apparaat wordt gestart, is ondertekend met een door Apple uitgegeven certificaat. Een Provisioning Profile fungeert als verbindende schakel: het bevestigt dat de ontwikkelaar het recht heeft om de app op dit apparaat te starten. Volgens de Apple Security Guide (2025) voorkomt het profielmechanisme de installatie van schadelijke software op de apparaten van gebruikers, zelfs als het certificaat van de ontwikkelaar in gevaar is gebracht.

Het profiel bepaalt ook welke systeemdiensten beschikbaar zijn voor de app. Als de app pushmeldingen gebruikt, vereist Apple Push Notification service (APNs) correcte entitlements in het profiel. Zonder dit worden servermeldingen niet op het apparaat afgeleverd. Een vergelijkbare regel geldt voor iCloud, App Groups, Wallet, HealthKit en andere Apple-frameworks.

Het verschil met een certificaat

Ontwikkelaars verwarren een Provisioning Profile vaak met een Apple Certificate. Een certificaat is een digitaal document dat de identiteit bevestigt (wie ondertekent), terwijl een profiel een configuratie is (welke app, op welke apparaten, met welke rechten). Eén certificaat kan in meerdere profielen worden gebruikt en één profiel is aan precies één certificaat gekoppeld. Apple raadt aan om voor elke app en elk scenario een apart profiel aan te maken — Development, Ad Hoc, App Store.

Hoe werkt een Provisioning Profile

Het proces van het ondertekenen van een app bestaat uit verschillende stappen die opeenvolgend worden uitgevoerd. Xcode neemt het binaire bestand van de app (App Bundle), ondertekent het met de privésleutel van de ontwikkelaar, voegt er een Provisioning Profile aan toe en stuurt het naar het apparaat. Het apparaat controleert de handtekening met de publieke sleutel van Apple, vergelijkt de UUID van het profiel met de lijst van vertrouwde profielen in het systeem en start de app alleen als alle controles slagen.

Wanneer de gebruiker een app downloadt uit de App Store, is het mechanisme anders. App Store Connect ondertekent de app opnieuw met het eigen Distribution-certificaat van Apple en vervangt het ontwikkelaarsprofiel door een Store-profiel. Dit betekent dat een via de App Store gepubliceerde app technisch is ondertekend door Apple, niet door de ontwikkelaar — hoewel de oorspronkelijke handtekening van de ontwikkelaar wordt gecontroleerd bij het uploaden van de build naar App Store Connect.

Voor Ad Hoc-distributie registreert het profiel de specifieke UDID's van apparaten waarop starten is toegestaan. Een gratis Apple Developer Program-account beperkt tot 100 apparaten per jaar voor testen. Enterprise-profielen (voor interne distributie binnen een organisatie) kennen geen beperking van het aantal apparaten, maar vereisen een actief Apple Developer Enterprise Program-abonnement van $299 per jaar.

De levenscyclus van een profiel

De geldigheidsduur van een Provisioning Profile is één jaar vanaf het moment van aanmaken. 30 dagen voor het verlopen begint Apple pushmeldingen naar de ontwikkelaar te sturen via Xcode en Developer Portal. Als een profiel verloopt, blijft de app op het apparaat werken (als deze al is geïnstalleerd), maar een nieuwe build met dit profiel kan niet worden geïnstalleerd. Xcode geeft bij een poging om met een verlopen profiel te bouwen een fout voor code-ondertekening met code -402620394. Apple raadt aan om automatische verlenging van profielen in te stellen via Xcode Accounts Preferences — dan werkt Xcode het profiel 24 uur voor het verlopen bij.

Typen Provisioning Profile

Apple biedt vier hoofdtypen Provisioning Profile aan, elk bedoeld voor een specifieke fase in de levenscyclus van de app. Een Development-profiel maakt het mogelijk om de app te starten op fysieke apparaten die zijn toegevoegd aan Apple Developer Portal en wordt gebruikt in de fase van ontwikkeling en QA-testen. Voor het aanmaken van een Development-profiel volstaat een gratis Apple-ontwikkelaarsaccount.

Een Ad Hoc-profiel is bedoeld om de app te distribueren onder een beperkte groep testers zonder gebruik van de App Store. Het profiel registreert tot 100 apparaten op basis van UDID en de app kan rechtstreeks worden geïnstalleerd via iTunes, Apple Configurator of MDM-oplossingen. Ad Hoc-builds hebben een geldigheidsduur van 12 maanden en hoeven niet door de review van Apple.

Een App Store-profiel wordt uitsluitend gebruikt om de app in de App Store te publiceren en bevat geen lijst van apparaten — Apple beheert de distributie zelf na goedkeuring van de build. Bij het uploaden van het archief naar App Store Connect gebruikt Xcode automatisch het App Store-profiel als dit in het systeem is geïnstalleerd. Een Enterprise-profiel is bedoeld voor organisaties met Apple Developer Enterprise Program en maakt het mogelijk om apps binnen het bedrijf te distribueren zonder beperking van het aantal apparaten en zonder review van Apple.

Type profielDoelApparatenKosten abonnement
DevelopmentOntwikkeling en testenTot 100 UDID'sGratis / $99 per jaar
Ad HocDistributie aan testersTot 100 UDID's$99 per jaar
App StorePublicatie in de App StoreElk aantal (via Apple)$99 per jaar
EnterpriseInterne distributieOnbeperkt$299 per jaar

Structuur van een Provisioning Profile

Een Provisioning Profile is een bestand in DER-indeling dat door Apple is ondertekend en waarvan de inhoud via de opdrachtregel kan worden bekeken. Het Security-framework van macOS maakt het mogelijk om .mobileprovision te decoderen naar een leesbaar XML-plist. Binnen het profiel bevinden zich: de UUID van het profiel, het App ID (teamvoorvoegsel + Bundle Identifier), de lijst van certificaten, de lijst van toegestane apparaten (alleen voor Development en Ad Hoc), entitlements en de geldigheidsduur.

App ID is de unieke identificatie van de app, bestaande uit de Team ID (10 tekens, toegewezen door Apple) en de Bundle Identifier (bijvoorbeeld com.example.myapp). Een App ID kan expliciet zijn (exacte overeenkomst met de Bundle Identifier) of wildcard (sjabloon *.example.com voor meerdere apps). Apple raadt af om wildcard te gebruiken voor apps die pushmeldingen of iCloud gebruiken — deze diensten vereisen een expliciet App ID.

Entitlements zijn een XML-blok in het profiel dat de toegangsrechten van de app tot systeembronnen bepaalt. Typische entitlements omvatten: aps-environment (pushmeldingen), com.apple.developer.icloud-services (iCloud), com.apple.security.application-groups (App Groups voor Widget en Share Extension). Apple voegt automatisch entitlements aan het profiel toe op basis van de in Xcode ingeschakelde Capabilities. Elke afwijking tussen de entitlements in het profiel en de in de code gevraagde rechten leidt tot een ondertekenfout.

Een Provisioning Profile aanmaken in Apple Developer

Het aanmaken van een profiel is op twee manieren mogelijk: via de webinterface van Apple Developer Portal of automatisch via Xcode. Voor een typisch project beheert Xcode profielen automatisch wanneer de optie Automatically manage signing is ingeschakeld. Xcode maakt het certificaat, het profiel en het App ID binnen enkele seconden aan en synchroniseert met Apple Developer Portal. Voor CI/CD-pijplijnen is echter handmatig beheer vereist.

Voor het handmatig aanmaken van een profiel in Apple Developer Portal moet u: naar de sectie Certificates, Identifiers & Profiles gaan, Profiles selecteren en op „+" klikken. Vervolgens het type profiel selecteren (Development, Ad Hoc, App Store of Enterprise), een App ID uit de geregistreerde lijst kiezen, het ontwikkelaarscertificaat selecteren en (voor Development en Ad Hoc) de apparaten kiezen. Na het aanmaken wordt het profiel gedownload in .mobileprovision-indeling en met een dubbelklik in Xcode geïnstalleerd.

CI/CD-servers vereisen een bijzondere aanpak: het profiel en het certificaat moeten in een beveiligde repository worden opgeslagen (bijvoorbeeld in de secrets van GitHub Actions). Tijdens het bouwen wordt het profiel naar de agent geladen, in de map ~/Library/MobileDevice/Provisioning Profiles geplaatst en wordt het certificaat in de sleutelhanger geïmporteerd. Fastlane — een populair hulpmiddel voor het automatiseren van ondertekening — biedt de opdracht match aan, die profielen en certificaten tussen ontwikkelaars synchroniseert via een versleutelde git-repository.

Voorbeeld: een profiel controleren via de opdrachtregel

Voor het diagnosticeren van problemen met code-ondertekening kunt u .mobileprovision decoderen en de inhoud controleren. De onderstaande opdracht extraheert het XML-plist uit het profiel en slaat het op in een leesbaar formaat:

bash
# Het decoderen van .mobileprovision naar XML
security cms -D -i "path/to/embedded.mobileprovision" \
  -o "profile.plist"

# De geldigheidsduur van het profiel controleren
plist -convert xml1 profile.plist -o -
grep -A 1 "ExpirationDate" profile.plist

Het hulpprogramma Security uit de macOS Command Line Tools decodeert het met CMS ondertekende bestand van het profiel. De vlag -D betekent decoderen, -i — het invoerbestand. Na het decoderen converteert het hulpprogramma plist het binaire plist naar XML en haalt grep de vervaldatum op. Deze methode is nuttig in CI/CD om te controleren dat het profiel niet is verlopen voordat de release-build wordt gemaakt.

Veelvoorkomende fouten met Provisioning Profile

De meest voorkomende fout is „No matching provisioning profiles found" tijdens het bouwen in Xcode. Deze treedt op wanneer Xcode geen profiel kan vinden dat overeenkomt met de buildconfiguratie: de Bundle Identifier komt niet overeen met het App ID in het profiel, het certificaat is niet geïnstalleerd in de sleutelhanger of het profiel is verlopen. Oplossing — controleer de instellingen Signing & Capabilities in de target en schakel indien nodig over op Automatically manage signing.

De fout „Provisioning profile doesn't include the selected device" verschijnt bij een poging om een Development- of Ad Hoc-build te starten op een apparaat waarvan de UDID niet aan het profiel is toegevoegd. Apple Developer Portal biedt de mogelijkheid om het apparaat aan een bestaand profiel toe te voegen — daarna moet het profiel opnieuw worden gedownload en geïnstalleerd. Xcode voegt bij automatisch beheer van de ondertekening het verbonden apparaat automatisch aan het profiel toe.

Een probleem met entitlements uit zich in de fout „The executable was signed with invalid entitlements" bij het uploaden naar App Store Connect. De oorzaak is een afwijking tussen de entitlements in het profiel en het .entitlements-bestand van het project. Apple vereist dat de set rechten in het profiel een superset is van de door de app gevraagde rechten. Oplossing — controleer de Capabilities in de Xcode-target en zorg ervoor dat alle ingeschakelde diensten de bijbehorende entitlements in het profiel hebben. Fastlane bevat de opdracht produce, die het App ID en de profielen synchroniseert met de actuele entitlements.

Veelgestelde vragen

Kan ik één Provisioning Profile voor meerdere apps gebruiken?

Ja, als het App ID in het profiel een wildcard-identificatie van de vorm com.example.* gebruikt. Wildcard-profielen ondersteunen echter geen pushmeldingen, iCloud, Game Center en App Groups. Apple raadt aan om voor elke app die uitgebreide Capabilities gebruikt een apart expliciet profiel aan te maken.

Wat gebeurt er als een Provisioning Profile verloopt terwijl de app al in de App Store staat?

Een via de App Store gedownloade app gebruikt het Store-profiel van Apple, dat niet afhankelijk is van het ontwikkelaarsprofiel. Gebruikers blijven de app downloaden en starten. Een verlopen profiel verhindert alleen het uploaden van een nieuwe build naar App Store Connect — Apple vereist dat het Distribution-profiel geldig is op het moment van verzending.

Hoe verplaats ik een Provisioning Profile naar een andere computer?

Het profiel kan naar de map ~/Library/MobileDevice/Provisioning Profiles op de nieuwe computer worden gekopieerd. Het profiel is echter gekoppeld aan het certificaat waarvan de privésleutel in de sleutelhanger staat. U moet het certificaat ook met de privésleutel via Keychain Access exporteren en op het nieuwe apparaat importeren.

Hoeveel Provisioning Profiles kunnen er op één computer staan?

Er is geen beperking voor het aantal profielen op een computer. Profielen worden opgeslagen in de map ~/Library/MobileDevice/Provisioning Profiles en genummerd op basis van UUID. Xcode selecteert automatisch het juiste profiel op basis van het App ID en het buildtype. Voor eenvoudiger beheer wordt aangeraden om ongebruikte profielen via Xcode Accounts Preferences te verwijderen.

Wat is het verschil tussen een Provisioning Profile en een Signing Certificate?

Een Signing Certificate bevestigt de identiteit van de ontwikkelaar — dit is een door Apple uitgegeven cryptografische sleutel. Een Provisioning Profile is een configuratiebestand dat aangeeft welke app (App ID) onder welk certificaat en op welke apparaten kan worden gestart. Het profiel verwijst altijd naar een specifiek certificaat, maar vervangt het niet.

Samenvatting

  • Provisioning Profile — een verplicht onderdeel van het ondertekenen van iOS-apps dat certificaat, App ID en apparaten verbindt
  • Een Development-profiel wordt gebruikt voor testen op fysieke apparaten met UDID-registratie
  • Een App Store-profiel wordt toegepast voor publicatie en bevat geen lijst van apparaten — distributie wordt door Apple beheerd
  • Ad Hoc maakt het mogelijk om de app onder 100 testers te distribueren zonder App Store
  • Een Enterprise-profiel is bedoeld voor bedrijfsdistributie zonder beperking van het aantal apparaten
  • De Entitlements in het profiel bepalen de toegang van de app tot de systeemdiensten van Apple
  • CI/CD vereist dat profielen in een beveiligde opslag worden bewaard met gebruik van Fastlane of vergelijkbare hulpmiddelen

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook