Ein Provisioning Profile verbindet Entwicklerzertifikate, App-Kennung und eine Liste zugelassener Geräte für die Codesignatur von iOS-Apps. Laut Apple Developer Documentation, 2026 ist ein Profil für jeden App-Start auf einem physischen Gerät erforderlich – ohne es kann Xcode einen Build nicht auf einem iPhone oder iPad installieren. In diesem Artikel behandeln wir die Struktur, Typen und den Erstellungsprozess von Profilen.
Das Wichtigste
Ein Provisioning Profile ist eine digitale Konfigurationsdatei im Format .mobileprovision (für iOS) oder .provisionprofile (für macOS), die Apple zur Steuerung der Installation und Ausführung von Apps auf Geräten verwendet. Das Profil enthält Metadaten zur Codesignatur, ohne die eine App nicht auf einem physischen iPhone, iPad oder einer Apple Watch ausgeführt werden kann – der Simulator benötigt kein Profil, da der Code nicht für die Ausführung auf einem echten Prozessor signiert wird.
Das Profil wird über das Apple Developer Portal ausgestellt und hat ein Ablaufdatum – normalerweise ein Jahr für Development- und Distribution-Profile. Gemäß der Apple-Richtlinie wird das Profil automatisch mit dem Apple Developer Program-Zertifikat verknüpft, unter dem es signiert wurde: Wird das Zertifikat widerrufen oder läuft ab, funktioniert das Profil nicht mehr.
Jedes Profil enthält eine eindeutige UUID, die Xcode verwendet, um das Profil im Schlüsselbund zu identifizieren. Xcode wählt während des Builds automatisch das passende Profil aus, aber der Entwickler kann die Auswahl in den Signing & Capabilities-Einstellungen überschreiben. Auf einem einzigen Gerät können unbegrenzt viele Profile installiert werden – Apples Mobile Device Management (MDM) nutzt dies für die unternehmensweite App-Verteilung.
Die Codesignatur ist der Hauptgrund für die Existenz von Profilen. Apple verlangt, dass jede auf einem iOS-Gerät ausgeführte App mit einem von Apple ausgestellten Zertifikat signiert ist. Das Provisioning Profile fungiert als Bindeglied: Es bestätigt, dass der Entwickler berechtigt ist, die App auf diesem Gerät auszuführen. Laut Apple Security Guide (2025) verhindert der Profilmechanismus die Installation von Malware auf Benutzergeräten, selbst wenn ein Entwicklerzertifikat kompromittiert wird.
Das Profil legt auch fest, welche Systemdienste für die App verfügbar sind. Wenn die App Push-Benachrichtigungen verwendet, benötigt der Apple Push Notification service (APNs) korrekte Entitlements innerhalb des Profils. Ohne diese werden Serverbenachrichtigungen nicht an das Gerät zugestellt. Dieselbe Regel gilt für iCloud, App Groups, Wallet, HealthKit und andere Apple-Frameworks.
Entwickler verwechseln häufig Provisioning Profile und Apple-Zertifikat. Ein Zertifikat ist ein digitales Dokument, das die Identität bestätigt (wer signiert), während ein Profil eine Konfiguration ist (welche App, auf welchen Geräten, mit welchen Berechtigungen). Ein Zertifikat kann in mehreren Profilen verwendet werden, und ein Profil ist an genau ein Zertifikat gebunden. Apple empfiehlt, für jede App und jedes Szenario – Development, Ad Hoc, App Store – ein separates Profil zu erstellen.
Der Signiervorgang der App besteht aus mehreren aufeinanderfolgenden Schritten. Xcode nimmt die App-Binärdatei (App Bundle), signiert sie mit dem privaten Schlüssel des Entwicklers, bettet das Provisioning Profile ein und sendet sie an das Gerät. Das Gerät überprüft die Signatur mit dem öffentlichen Schlüssel von Apple, vergleicht die Profil-UUID mit der Liste vertrauenswürdiger Profile im System und startet die App nur, wenn alle Prüfungen erfolgreich sind.
Wenn ein Benutzer eine App aus dem App Store herunterlädt, unterscheidet sich der Mechanismus. App Store Connect signiert die App mit Apples eigenem Distribution-Zertifikat neu und ersetzt das Entwicklerprofil durch ein Store-Profil. Das bedeutet, dass eine über den App Store veröffentlichte App technisch von Apple signiert ist, nicht vom Entwickler – obwohl die ursprüngliche Entwicklersignatur beim Hochladen des Builds in App Store Connect überprüft wird.
Für die Ad Hoc-Verteilung registriert das Profil bestimmte Geräte-UDIDs, auf denen die App ausgeführt werden darf. Ein kostenloses Apple Developer Program-Konto beschränkt das Testen auf 100 Geräte pro Jahr. Enterprise-Profile (für die interne Verteilung innerhalb einer Organisation) haben keine Gerätebeschränkung, erfordern jedoch ein aktives Apple Developer Enterprise Program-Abonnement für 299 $ pro Jahr.
Die Gültigkeitsdauer eines Provisioning Profiles beträgt ein Jahr ab Erstellung. 30 Tage vor Ablauf beginnt Apple, Push-Benachrichtigungen an den Entwickler über Xcode und das Developer Portal zu senden. Wenn das Profil abläuft, funktioniert eine bereits installierte App weiter, aber ein neuer Build kann mit diesem Profil nicht installiert werden. Xcode gibt einen Codesignaturfehler mit Code -402620394 aus, wenn versucht wird, mit einem abgelaufenen Profil zu bauen. Apple empfiehlt, die automatische Profilverlängerung über Xcode Accounts Preferences einzurichten – dann erneuert Xcode das Profil 24 Stunden vor Ablauf.
Apple bietet vier Haupttypen von Provisioning Profiles an, die jeweils für eine bestimmte Phase des App-Lebenszyklus konzipiert sind. Das Development-Profil ermöglicht die Ausführung der App auf physischen Geräten, die dem Apple Developer Portal hinzugefügt wurden, und wird während der Entwicklung und QA-Tests verwendet. Ein kostenloses Apple-Entwicklerkonto reicht aus, um ein Development-Profil zu erstellen.
Das Ad Hoc-Profil ist für die Verteilung einer App an eine begrenzte Gruppe von Testern ohne den App Store konzipiert. Das Profil registriert bis zu 100 Geräte per UDID, und die App kann direkt über iTunes, Apple Configurator oder MDM-Lösungen installiert werden. Ad Hoc-Builds haben eine Gültigkeit von 12 Monaten und benötigen keine Apple-Überprüfung.
Das App Store-Profil wird ausschließlich zur Veröffentlichung der App im App Store verwendet und enthält keine Geräteliste – Apple selbst verwaltet die Verteilung nach der Build-Freigabe. Beim Hochladen eines Archivs in App Store Connect verwendet Xcode automatisch das App Store-Profil, falls es im System installiert ist. Das Enterprise-Profil ist für Organisationen mit Apple Developer Enterprise Program gedacht und ermöglicht die interne App-Verteilung ohne Gerätebeschränkung oder Apple-Überprüfung.
| Profiltyp | Zweck | Geräte | Abonnementkosten |
|---|---|---|---|
| Development | Entwicklung und Test | Bis zu 100 UDIDs | Kostenlos / 99 $ pro Jahr |
| Ad Hoc | Verteilung an Tester | Bis zu 100 UDIDs | 99 $ pro Jahr |
| App Store | App Store-Veröffentlichung | Beliebig (durch Apple) | 99 $ pro Jahr |
| Enterprise | Interne Verteilung | Unbegrenzt | 299 $ pro Jahr |
Ein Provisioning Profile ist eine von Apple signierte Datei im DER-Format, deren Inhalt über die Befehlszeile eingesehen werden kann. Das Security-Framework von macOS ermöglicht die Decodierung von .mobileprovision in einen lesbaren XML-Plist. Im Profil enthalten sind: Profil-UUID, App-ID (Team-Präfix + Bundle-ID), Zertifikatsliste, Liste zugelassener Geräte (nur für Development und Ad Hoc), Entitlements und Ablaufdatum.
Die App-ID ist eine eindeutige App-Kennung bestehend aus einer Team-ID (10 Zeichen, von Apple vergeben) und einer Bundle-ID (z. B. com.example.myapp). Eine App-ID kann explizit (genaue Übereinstimmung mit Bundle-ID) oder als Wildcard (Muster *.example.com für mehrere Apps) sein. Apple empfiehlt keine Wildcard für Apps, die Push-Benachrichtigungen oder iCloud verwenden – diese Dienste erfordern eine explizite App-ID.
Entitlements sind ein XML-Block innerhalb des Profils, der die Zugriffsrechte der App auf Systemressourcen definiert. Typische Entitlements umfassen: aps-environment (Push-Benachrichtigungen), com.apple.developer.icloud-services (iCloud), com.apple.security.application-groups (App Groups für Widget und Share Extension). Apple fügt dem Profil automatisch Entitlements basierend auf den in Xcode aktivierten Capabilities hinzu. Jede Abweichung zwischen den Entitlements im Profil und den im Code angeforderten führt zu einem Signaturfehler.
Die Erstellung eines Profils ist auf zwei Arten möglich: über die Weboberfläche des Apple Developer Portals oder automatisch über Xcode. Für ein typisches Projekt verwaltet Xcode Profile automatisch, wenn die Option Automatically manage signing aktiviert ist. Xcode erstellt innerhalb weniger Sekunden ein Zertifikat, Profil und eine App-ID und synchronisiert sich mit dem Apple Developer Portal. CI/CD-Pipelines erfordern jedoch manuelle Verwaltung.
Zur manuellen Erstellung eines Profils im Apple Developer Portal: Gehen Sie zu Certificates, Identifiers & Profiles, wählen Sie Profiles und klicken Sie auf "+". Wählen Sie dann den Profiltyp (Development, Ad Hoc, App Store oder Enterprise), wählen Sie eine App-ID aus der registrierten Liste, wählen Sie ein Entwicklerzertifikat und (für Development und Ad Hoc) wählen Sie Geräte aus. Nach der Erstellung wird das Profil im .mobileprovision-Format heruntergeladen und durch Doppelklick in Xcode installiert.
CI/CD-Server erfordern einen besonderen Ansatz: Das Profil und das Zertifikat müssen in einem geschützten Repository (z. B. in GitHub Actions Secrets) gespeichert werden. Während des Builds wird das Profil auf den Agenten geladen, in den Ordner ~/Library/MobileDevice/Provisioning Profiles gelegt und das Zertifikat in den Schlüsselbund importiert. Fastlane – ein beliebtes Tool zur Signaturautomatisierung – bietet den Befehl match, der Profile und Zertifikate über ein verschlüsseltes Git-Repository zwischen Entwicklern synchronisiert.
Zur Diagnose von Codesignaturproblemen können Sie die .mobileprovision decodieren und ihren Inhalt überprüfen. Der folgende Befehl extrahiert den XML-Plist aus dem Profil und speichert ihn in einem lesbaren Format:
# Decodierung von .mobileprovision in XML
security cms -D -i "path/to/embedded.mobileprovision" \
-o "profile.plist"
# Überprüfung des Profilablaufdatums
plist -convert xml1 profile.plist -o -
grep -A 1 "ExpirationDate" profile.plist
Das Security-Dienstprogramm aus den macOS Command Line Tools decodiert die CMS-signierte Profildatei. Das Flag -D bedeutet Decodierung, -i gibt die Eingabedatei an. Nach der Decodierung konvertiert das Plist-Dienstprogramm den binären Plist in XML, und grep extrahiert das Ablaufdatum. Diese Methode ist in CI/CD nützlich, um vor dem Bau einer Version zu überprüfen, dass das Profil nicht abgelaufen ist.
Der häufigste Fehler ist "No matching provisioning profiles found" beim Bauen in Xcode. Er tritt auf, wenn Xcode kein Profil findet, das der Build-Konfiguration entspricht: Die Bundle-ID stimmt nicht mit der App-ID im Profil überein, das Zertifikat ist nicht im Schlüsselbund installiert oder das Profil ist abgelaufen. Lösung: Überprüfen Sie die Signing & Capabilities-Einstellungen im Target und wechseln Sie gegebenenfalls zu Automatically manage signing.
Der Fehler "Provisioning profile doesn't include the selected device" erscheint beim Versuch, einen Development- oder Ad Hoc-Build auf einem Gerät auszuführen, dessen UDID nicht zum Profil hinzugefügt wurde. Das Apple Developer Portal ermöglicht das Hinzufügen eines Geräts zu einem bestehenden Profil – danach muss das Profil erneut heruntergeladen und installiert werden. Xcode fügt bei automatischer Signaturverwaltung das angeschlossene Gerät automatisch zum Profil hinzu.
Ein Problem mit Entitlements zeigt sich als Fehler "The executable was signed with invalid entitlements" beim Hochladen in App Store Connect. Ursache ist eine Diskrepanz zwischen den Entitlements im Profil und denen in der .entitlements-Datei des Projekts. Apple verlangt, dass die Rechte im Profil eine Obermenge der von der App angeforderten Rechte darstellen. Lösung: Überprüfen Sie die Capabilities im Xcode-Target und stellen Sie sicher, dass alle aktivierten Dienste entsprechende Entitlements im Profil haben. Fastlane enthält den Befehl produce, der App-IDs und Profile mit aktuellen Entitlements synchronisiert.
Häufig gestellte Fragen
Ja, wenn die App-ID im Profil eine Wildcard-Kennung der Form com.example.* verwendet. Wildcard-Profile unterstützen jedoch keine Push-Benachrichtigungen, iCloud, Game Center und App Groups. Apple empfiehlt, für jede App, die erweiterte Capabilities verwendet, ein separates explizites Profil zu erstellen.
Eine über den App Store hochgeladene App verwendet Apples Store-Profil, das unabhängig vom Entwicklerprofil ist. Benutzer können die App weiterhin herunterladen und ausführen. Ein abgelaufenes Profil verhindert nur das Hochladen eines neuen Builds in App Store Connect – Apple verlangt, dass das Distribution-Profil zum Zeitpunkt der Einreichung gültig ist.
Das Profil kann in den Ordner ~/Library/MobileDevice/Provisioning Profiles auf dem neuen Computer kopiert werden. Allerdings ist das Profil an ein Zertifikat gebunden, dessen privater Schlüssel sich im Schlüsselbund befindet. Sie müssen auch das Zertifikat mit seinem privaten Schlüssel über Keychain Access exportieren und auf dem neuen Gerät importieren.
Es gibt keine Begrenzung der Anzahl von Profilen auf einem Computer. Profile werden in ~/Library/MobileDevice/Provisioning Profiles gespeichert und per UUID identifiziert. Xcode wählt automatisch das passende Profil basierend auf App-ID und Build-Typ aus. Zur Vereinfachung der Verwaltung wird empfohlen, ungenutzte Profile über Xcode Accounts Preferences zu entfernen.
Ein Signing Certificate bestätigt die Identität des Entwicklers – es ist ein von Apple ausgestellter kryptografischer Schlüssel. Ein Provisioning Profile ist eine Konfigurationsdatei, die angibt, welche App (App-ID) unter welchem Zertifikat und auf welchen Geräten ausgeführt werden darf. Das Profil verweist immer auf ein bestimmtes Zertifikat, ersetzt es jedoch nicht.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch