A Provisioning Profile összeköti a fejlesztő tanúsítványait, az alkalmazásazonosítót és az iOS-alkalmazások kódjának aláírásához engedélyezett eszközök listáját. A Apple Developer Documentation, 2026 adatai szerint a profil minden alkalmazás fizikai eszközön történő elindításához szükséges — nélküle a Xcode nem tudja telepíteni a buildet iPhone-ra vagy iPadre. A cikkben áttekintjük a profilok szerkezetét, típusait és létrehozásuk folyamatát.
Főbb pontok
A Provisioning Profile egy digitális konfigurációs fájl .mobileprovision (iOS esetén) vagy .provisionprofile (macOS esetén) formátumban, amelyet az Apple az alkalmazások eszközökre történő telepítésének és elindításának ellenőrzésére használ. A profil tartalmazza a kódaláírás metaadatait, amelyek nélkül az alkalmazás nem indítható fizikai iPhone-on, iPaden vagy Apple Watchon — a szimulátor nem igényel profilt, mert a kód nincs aláírva valódi processzoron történő futtatáshoz.
A profil az Apple Developer Portálon keresztül kerül kiállításra, és érvényességi idővel rendelkezik — általában egy év a Development és Distribution profilok esetében. Az Apple irányelvei szerint a profil automatikusan kapcsolódik ahhoz a Apple Developer Program tanúsítványhoz, amellyel aláírták: ha a tanúsítványt visszavonják vagy lejár, a profil működése megszűnik.
Minden profil egyedi UUID-t tartalmaz, amelyet a Xcode a profil kulcskarikában történő azonosításához használ. A Xcode automatikusan kiválasztja a megfelelő profilt a fordítás során, de a fejlesztő módosíthatja a kiválasztást a Signing & Capabilities beállításokban. Egy eszközre korlátlan számú profil telepíthető — az Apple eszközkezelő rendszere (MDM) ezt használja az alkalmazások vállalati terjesztéséhez.
A kódaláírás a profilok létezésének fő oka. Az Apple megköveteli, hogy minden iOS-es eszközön elindított alkalmazást az Apple által kiállított tanúsítvánnyal írjanak alá. A Provisioning Profile összekötő kapocsként működik: megerősíti, hogy a fejlesztőnek joga van az alkalmazást ezen az eszközön elindítani. A Apple Security Guide (2025) szerint a profilmechanizmus még a fejlesztő tanúsítványának kompromittálása esetén is megakadályozza a rosszindulatú szoftverek telepítését a felhasználók eszközeire.
A profil azt is meghatározza, hogy mely rendszerszolgáltatások érhetők el az alkalmazás számára. Ha az alkalmazás Push-értesítéseket használ, az Apple Push Notification service (APNs) megfelelő entitlements-eket követel meg a profilban. Enélkül a szerverértesítések nem jutnak el az eszközre. Hasonló szabály vonatkozik az iCloudra, az App Groupsre, a Walletre, a HealthKitre és más Apple-keretrendszerekre.
A fejlesztők gyakran összekeverik a Provisioning Profile-t és az Apple Certificate-et. A tanúsítvány egy digitális dokumentum, amely megerősíti a személyazonosságot (ki írja alá), míg a profil egy konfiguráció (melyik alkalmazás, milyen eszközökön, milyen jogokkal). Egy tanúsítvány több profilban is használható, és egy profil pontosan egy tanúsítványhoz kapcsolódik. Az Apple minden alkalmazáshoz és minden forgatókönyvhöz külön profil létrehozását javasolja — Development, Ad Hoc, App Store.
Az alkalmazás aláírásának folyamata több, egymás után végrehajtott lépésből áll. A Xcode veszi az alkalmazás bináris fájlját (App Bundle), aláírja a fejlesztő privát kulcsával, beágyazza a Provisioning Profile-t, és elküldi az eszközre. Az eszköz az Apple nyilvános kulcsával ellenőrzi az aláírást, összeveti a profil UUID-jét a rendszer megbízható profiljainak listájával, és csak akkor indítja el az alkalmazást, ha minden ellenőrzés sikeres.
Amikor a felhasználó az App Store-ból tölti le az alkalmazást, a mechanizmus más. Az App Store Connect újra aláírja az alkalmazást az Apple saját Distribution tanúsítványával, és a fejlesztő profilját Store-profilra cseréli. Ez azt jelenti, hogy az App Store-on keresztül közzétett alkalmazást technikailag az Apple írta alá, nem a fejlesztő — bár az eredeti fejlesztői aláírást a build App Store Connectbe történő feltöltésének szakaszában ellenőrzik.
Ad Hoc terjesztés esetén a profil azokat a konkrét eszköz-UDID-ket regisztrálja, amelyeken az indítás engedélyezett. Az ingyenes Apple Developer Program fiók évente 100 eszközre korlátozza a tesztelést. Az Enterprise profilok (szervezeten belüli belső terjesztésre) nem korlátozzák az eszközök számát, de aktív Apple Developer Enterprise Program előfizetést igényelnek, évi 299 dollárért.
A Provisioning Profile érvényességi ideje a létrehozástól számított egy év. A lejárat előtt 30 nappal az Apple push-értesítéseket kezd küldeni a fejlesztőnek a Xcode-on és a Developer Portálon keresztül. Ha a profil lejár, az eszközön lévő alkalmazás tovább működik (ha már telepítve van), de az ezzel a profillal készült új build nem telepíthető. A Xcode a lejárt profillal történő fordítási kísérletnél kódaláírási hibát ad, -402620394 kóddal. Az Apple a profilok automatikus megújítását javasolja a Xcode Accounts Preferences beállításokban — így a Xcode 24 órával a lejárat előtt frissíti a profilt.
Az Apple négy fő Provisioning Profile típust kínál, amelyek mindegyike az alkalmazás életciklusának egy adott szakaszára szolgál. A Development profil lehetővé teszi az alkalmazás elindítását az Apple Developer Portálra felvett fizikai eszközökön, és a fejlesztés és a QA-tesztelés szakaszában használatos. A Development profil létrehozásához elegendő az ingyenes Apple fejlesztői fiók.
Az Ad Hoc profil az alkalmazás korlátozott tesztelői körben történő terjesztésére szolgál az App Store használata nélkül. A profil UDID alapján legfeljebb 100 eszközt regisztrál, és az alkalmazás közvetlenül telepíthető iTunes, Apple Configurator vagy MDM-megoldások segítségével. Az Ad Hoc buildek érvényességi ideje 12 hónap, és nem igényelnek Apple-felülvizsgálatot.
Az App Store profilt kizárólag az alkalmazás App Store-ban történő közzétételére használják, és nem tartalmaz eszközlistát — az Apple maga kezeli a terjesztést a build jóváhagyása után. Az archívumnak az App Store Connectbe történő feltöltésekor a Xcode automatikusan az App Store profilt használja, ha az telepítve van a rendszerben. Az Enterprise profil az Apple Developer Enterprise Programmal rendelkező szervezetek számára készült, és lehetővé teszi az alkalmazások cégen belüli terjesztését eszközszám-korlátozás és Apple-felülvizsgálat nélkül.
| Profil típusa | Cél | Eszközök | Előfizetés ára |
|---|---|---|---|
| Development | Fejlesztés és tesztelés | Legfeljebb 100 UDID | Ingyenes / évi 99 dollár |
| Ad Hoc | Terjesztés tesztelőknek | Legfeljebb 100 UDID | évi 99 dollár |
| App Store | Közzététel az App Store-ban | Bármennyi (az Apple-en keresztül) | évi 99 dollár |
| Enterprise | Belső terjesztés | Korlátlan | évi 299 dollár |
A Provisioning Profile egy DER formátumú, az Apple által aláírt fájl, amelynek tartalmát parancssorból tekinthetjük meg. A macOS Security keretrendszere lehetővé teszi a .mobileprovision olvasható XML plist-é történő dekódolását. A profilon belül megtalálható: a profil UUID-je, az App ID (csapatelőtag + Bundle Identifier), a tanúsítványok listája, az engedélyezett eszközök listája (csak Development és Ad Hoc esetén), az entitlements és az érvényességi idő.
Az App ID — az alkalmazás egyedi azonosítója, amely a Team ID-ből (10 karakter, az Apple osztja ki) és a Bundle Identifierből áll (például com.example.myapp). Az App ID lehet explicit (pontos egyezés a Bundle Identifierrel) vagy wildcard (a *.example.com minta több alkalmazáshoz). Az Apple nem javasolja a wildcard használatát Push-értesítéseket vagy iCloudot használó alkalmazásokhoz — ezek a szolgáltatások explicit App ID-t igényelnek.
Az Entitlements — a profilon belüli XML-blokk, amely meghatározza az alkalmazás hozzáférési jogait a rendszer erőforrásaihoz. A tipikus entitlements közé tartozik: aps-environment (Push-értesítések), com.apple.developer.icloud-services (iCloud), com.apple.security.application-groups (App Groups a Widget és a Share Extension számára). Az Apple a Xcode-ban engedélyezett Capabilities alapján automatikusan hozzáadja az entitlements-eket a profilhoz. Bármilyen eltérés a profilban lévő entitlements és a kódban kért jogok között aláírási hibát eredményez.
A profil kétféleképpen hozható létre: az Apple Developer Portál webes felületén keresztül, vagy automatikusan a Xcode-on keresztül. Egy tipikus projekt esetén a Xcode automatikusan kezeli a profilokat, ha engedélyezve van az Automatically manage signing opció. A Xcode másodpercek alatt létrehozza a tanúsítványt, a profilt és az App ID-t, és szinkronizál az Apple Developer Portállal. A CI/CD-folyamatokhoz azonban kézi kezelés szükséges.
A profil kézi létrehozásához az Apple Developer Portálon a következőkre van szükség: lépjen a Certificates, Identifiers & Profiles szakaszba, válassza a Profiles elemet, és kattintson a „+"-ra. Ezután válassza ki a profil típusát (Development, Ad Hoc, App Store vagy Enterprise), válassza ki az App ID-t a regisztráltak listájából, válassza ki a fejlesztői tanúsítványt, és (Development és Ad Hoc esetén) válassza ki az eszközöket. A létrehozás után a profil .mobileprovision formátumban tölthető le, és dupla kattintással telepíthető a Xcode-ban.
A CI/CD-szerverek különleges megközelítést igényelnek: a profilt és a tanúsítványt védett adattárban kell tárolni (például a GitHub Actions titkai között). A fordítás során a profilt betöltik az ügynökre, a ~/Library/MobileDevice/Provisioning Profiles mappába helyezik, a tanúsítványt pedig importálják a kulcskarikába. A Fastlane — az aláírás automatizálásának népszerű eszköze — a match parancsot kínálja, amely titkosított git-adattáron keresztül szinkronizálja a profilokat és tanúsítványokat a fejlesztők között.
A kódaláírási problémák diagnosztizálásához dekódolhatja a .mobileprovision fájlt, és ellenőrizheti a tartalmát. Az alábbi parancs kinyeri az XML plist-et a profilból, és olvasható formátumba menti:
# A .mobileprovision XML-é dekódolása
security cms -D -i "path/to/embedded.mobileprovision" \
-o "profile.plist"
# A profil érvényességi idejének ellenőrzése
plist -convert xml1 profile.plist -o -
grep -A 1 "ExpirationDate" profile.plist
A Security segédprogram a macOS Command Line Tools összetételéből dekódolja a profil CMS-aláírt fájlját. A -D jelző dekódolást jelent, a -i pedig a bemeneti fájlt. A dekódolás után a plist segédprogram a bináris plist-et XML-é konvertálja, a grep pedig kinyeri a lejárat dátumát. Ez a módszer a CI/CD-ben hasznos annak ellenőrzésére, hogy a profil nem járt-e le a release build fordítás előtt.
A leggyakoribb hiba a „No matching provisioning profiles found" a Xcode-os fordítás során. Ez akkor fordul elő, amikor a Xcode nem talál a fordítási konfigurációnak megfelelő profilt: a Bundle Identifier nem egyezik a profilban lévő App ID-val, a tanúsítvány nincs telepítve a kulcskarikában, vagy a profil lejárt. Megoldás — ellenőrizze a Signing & Capabilities beállításokat a targetben, és szükség esetén váltson Automatically manage signing módra.
A „Provisioning profile doesn't include the selected device" hiba akkor jelenik meg, ha Development vagy Ad Hoc buildet próbál elindítani olyan eszközön, amelynek UDID-je nincs hozzáadva a profilhoz. Az Apple Developer Portál lehetővé teszi az eszköz hozzáadását egy meglévő profilhoz — ezt követően a profilt újra le kell tölteni és telepíteni. A Xcode az aláírás automatikus kezelésekor a csatlakoztatott eszközt automatikusan hozzáadja a profilhoz.
Az entitlements problémája az App Store Connectbe történő feltöltéskor a „The executable was signed with invalid entitlements" hibában nyilvánul meg. Ok — a profilban lévő entitlements és a projekt .entitlements fájljának eltérése. Az Apple megköveteli, hogy a profilban lévő jogok halmaza szuperhalmaza legyen az alkalmazás által kért jogoknak. Megoldás — ellenőrizze a Capabilities beállításokat a Xcode targetben, és győződjön meg arról, hogy minden engedélyezett szolgáltatás rendelkezik megfelelő entitlements-ekkel a profilban. A Fastlane tartalmazza a produce parancsot, amely az App ID-t és a profilokat az aktuális entitlements-ekkel szinkronizálja.
Gyakran ismételt kérdések
Igen, ha a profilban lévő App ID com.example.* formájú wildcard-azonosítót használ. A wildcard-profilok azonban nem támogatják a Push-értesítéseket, az iCloudot, a Game Centert és az App Groupst. Az Apple azt javasolja, hogy minden, fejlett Capabilities-t használó alkalmazáshoz külön explicit profilt hozzon létre.
Az App Store-on keresztül letöltött alkalmazás az Apple Store-profilját használja, amely nem függ a fejlesztő profiljától. A felhasználók továbbra is letölthetik és futtathatják az alkalmazást. A lejárt profil csak az új build App Store Connectbe történő feltöltését akadályozza — az Apple megköveteli, hogy a Distribution profil a küldés pillanatában érvényes legyen.
A profil átmásolható a ~/Library/MobileDevice/Provisioning Profiles mappába az új számítógépen. A profil azonban ahhoz a tanúsítványhoz kapcsolódik, amelynek privát kulcsa a kulcskarikában van. A tanúsítványt a privát kulccsal együtt a Keychain Accessen keresztül is exportálni kell, és importálni az új eszközön.
Nincs korlátozás a számítógépen lévő profilok számára. A profilok a ~/Library/MobileDevice/Provisioning Profiles mappában tárolódnak, és UUID alapján vannak számozva. A Xcode az App ID és a build típusa alapján automatikusan kiválasztja a megfelelő profilt. A kezelés egyszerűsítése érdekében javasolt a nem használt profilok eltávolítása a Xcode Accounts Preferences beállításokban.
A Signing Certificate megerősíti a fejlesztő személyazonosságát — ez egy az Apple által kiállított kriptográfiai kulcs. A Provisioning Profile egy konfigurációs fájl, amely megmutatja, hogy melyik alkalmazás (App ID) milyen tanúsítvánnyal és milyen eszközökön indítható. A profil mindig egy adott tanúsítványra hivatkozik, de nem helyettesíti azt.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is