# iOS-utviklersertifikat: provisioning profile og Expo

> Sertifikatet viser hvem som signerer appen, provisioning-profilen sier hvilken app og hvilke iPhoner. Med Expo lager og fornyer EAS begge for deg.

Opprinnelig side: [iOS-utviklersertifikat: provisioning profile og Expo](https://devoria.fr/no/blog/ios-utviklersertifikat-provisioning-profile-expo)
Forfatter: [Mehdi Azizi](https://devoria.fr/no/mehdi-azizi)
Publisert: 2026-11-04
Innhold sist revidert: 2026-11-04


Et iOS-utviklersertifikat viser hvem som har signert appen din. Provisioning-profilen knytter sertifikatet til en bestemt app og sier hvor den får lov til å kjøre. **Med Expo trenger du nesten aldri å lage dem for hånd: EAS lager dem, lagrer dem og fornyer dem når du starter et build.**

Det lønner seg likevel å forstå hva hver fil gjør. Den dagen et build nekter å installeres eller en opplasting stopper opp, er det denne kunnskapen som sparer deg for en hel dag. Denne guiden går gjennom de fire elementene, hvor lenge de varer, Apples begrensninger og de typiske feilene, med løsningen på hver av dem.

Jeg publiserer iOS-appene mine med Expo og EAS, blant annet Solys og TradaZen. Hele prosessen finner du i [publisere en iOS-app uten Mac](https://devoria.fr/no/blog/publisere-ios-app-uten-mac-expo-eas). Her åpner vi panseret på signeringen.

## Hvorfor Apple krever signering

En iOS-app må være signert for å kunne installeres på en iPhone eller sendes til App Store Connect. Signaturen garanterer at appen kommer fra en utvikler Apple kjenner, og at ingen har endret den siden.

For App Store er det en detalj som er betryggende. Ifølge [Apples tekniske notat TN3161](https://developer.apple.com/documentation/technotes/tn3161-inside-code-signing-certificates) sjekker App Store at distribusjonssertifikatet ditt er gyldig ved opplasting, og signerer deretter appen på nytt. Da er appen ikke lenger avhengig av utløpsdatoen til sertifikatet ditt. **Sertifikatene dine må altså være gyldige når du laster opp, ikke gjennom hele appens levetid.**

## De fire elementene du må kjenne til

[Expos dokumentasjon om credentials](https://docs.expo.dev/app-signing/app-credentials/) nevner tre for iOS: distribusjonssertifikatet, profilene og nøkkelen for push-varsler. Jeg legger til app-ID-en, siden ingen profil finnes uten den.

### Distribusjonssertifikatet

Dette er utviklersignaturen din. [Apples hjelpesider om sertifikater](https://developer.apple.com/help/account/certificates/certificates-overview) skiller mellom to typer:

- **Apple Development** brukes til å kjøre appen på enhetene dine under utvikling. Det tilhører én person.
- **Apple Distribution** brukes til å distribuere til utvalgte testenheter eller laste opp til App Store Connect. Det tilhører teamet, og bare kontoinnehaveren eller en admin kan lage det.

Distribusjonssertifikatet gjelder ikke én bestemt app: det samme sertifikatet signerer alle appene dine. Det hører sammen med en privat nøkkel, og det er den som gjør signeringen mulig. Ifølge TN3161 er et Apple-sertifikat vanligvis gyldig i ett år fra det ble opprettet.

### App-ID-en (App ID)

App ID identifiserer appen din i en profil. Den bruker bundle-identifikatoren din, for eksempel `com.exemple.monapp` (et oppdiktet eksempel). Ifølge [Apples hjelpesider](https://developer.apple.com/help/account/identifiers/register-an-app-id) inneholder den også listen over tillatte funksjoner (capabilities): push-varsler, App Groups, Sign in with Apple …

Med Expo er det feltet `ios.bundleIdentifier` i konfigurasjonen din. **Velg den én gang for alle**: den må være lik overalt, både i konfigurasjonen og i App Store Connect. App ID utløper ikke. Og ifølge [Expos dokumentasjon om iOS-capabilities](https://docs.expo.dev/build-reference/ios-capabilities/) synkroniserer EAS funksjonene med konfigurasjonen din ved hvert build.

### Provisioning-profilen

Profilen binder alt sammen. Den inneholder en App ID, et sertifikat og, avhengig av typen, en liste over godkjente enheter. Tre typer er relevante for deg:

- **Development**: testappen din på de registrerte enhetene dine.
- **Ad hoc**: et build som kan installeres på en bestemt liste enheter, hver identifisert med sin UDID. Dette er EAS sin «interne distribusjon».
- **App Store**: for App Store Connect og TestFlight. Den inneholder ingen enhetsliste, forklarer [notatet TN3125](https://developer.apple.com/documentation/technotes/tn3125-inside-code-signing-provisioning-profiles).

Hver profil har en utløpsdato: vanligvis maks ett år ifølge Apple, 12 måneder ifølge Expo.

### Nøkkelen for push-varsler (APNs)

APNs-nøkkelen gir serveren din, eller Expos server, lov til å sende varsler til appen din. Det er en .p8-fil som bare kan lastes ned én gang: [Apple tar ikke vare på den](https://developer.apple.com/help/account/keys/create-a-private-key) i kontoen din. Én og samme nøkkel brukes for alle appene dine, og [den utløper aldri](https://developer.apple.com/support/expiration/).

## Oppsummeringstabell

| Element                 | Brukes til                  | Varighet          | Hvem håndterer det med Expo |
| ----------------------- | --------------------------- | ----------------- | --------------------------- |
| Distribusjonssertifikat | Signere buildene dine       | Vanligvis ett år  | EAS, etter innlogging       |
| App ID                  | Identifisere appen          | Utløper ikke      | Du, deretter EAS            |
| App Store-profil        | Sende til Apple             | Opptil 12 måneder | EAS                         |
| Ad hoc-profil           | Installere på iPhonene dine | Opptil 12 måneder | EAS og enhetene dine        |
| APNs push-nøkkel        | Sende varsler               | Utløper ikke      | EAS eller du                |
| Profil på gratiskonto   | Teste via Xcode             | 7 dager           | Xcode, ikke EAS             |

«Du, deretter EAS»: du velger bundle-identifikatoren, EAS tar seg av funksjonene. «EAS og enhetene dine»: du registrerer hver test-iPhone, EAS lager profilen. Den siste raden gjelder gratis Apple-konto: ifølge [Apples hjelpesider om kontoer](https://developer.apple.com/help/account/basics/about-your-developer-account) utløper profilene der 7 dager etter at de ble opprettet.

## Apples begrensninger du bør kjenne til

- **Distribusjonssertifikater**: svært få per konto. Apples hjelpesider snakker om bare ett per distribusjonstype og per team, Expos tabell om en grense på 2. Husk regelen: **ikke lag et nytt sertifikat for hvert build eller på hver datamaskin.**
- **APNs-nøkler**: maks 2 per konto, ifølge Expo.
- **Profiler**: ingen grense, ifølge Expo.
- **Enheter**: opptil 100 per produktfamilie og per medlemsår, ifølge [Apples hjelpesider om enheter](https://developer.apple.com/help/account/devices/devices-overview). Å deaktivere en enhet frigjør ikke plass. Telleren settes tilbake til 100 ved starten av neste medlemsår, hvis du fjerner enhetene.

## Hva EAS gjør for deg

Ifølge [Expos side om managed credentials](https://docs.expo.dev/app-signing/managed-credentials/) foreslår ditt første iOS-build å generere det som mangler. Du logger inn på Apple Developer-kontoen din, EAS lager distribusjonssertifikatet, profilen og push-nøkkelen, og lagrer dem på sine servere. Senere builds gjenbruker dem.

Tre nyttige poenger:

- **Apple-passordet ditt blir værende på maskinen din.** [Expos sikkerhetsside](https://docs.expo.dev/app-signing/security/) presiserer at det ikke sendes til serverne deres, og at lagrede credentials er kryptert.
- **`eas credentials` viser deg alt**: sertifikat, profiler, push-nøkkel. Kommandoen lar deg også erstatte eller fjerne dem.
- **Å slette i EAS sletter ikke hos Apple.** For å frigjøre en plass må du tilbakekalle i Apples portal.

Du kan også beholde kontrollen selv med lokale credentials: en `credentials.json`-fil peker til sertifikatet ditt (.p12) og profilen din (.mobileprovision). Expo ber deg legge disse filene i `.gitignore`. Det er samme regel som for [API-nøkler i en Expo-app](https://devoria.fr/no/blog/hemmelig-api-nokkel-expo-app): en hemmelighet havner aldri i repoet.

## Typiske feil og hvordan du løser dem

### Utløpt profil

Et ad hoc-build har profilen innebygd: når den utløper, åpner appen seg ikke lenger på test-iPhonene dine. På App Store, derimot, bekrefter Expo at utløpet ikke har noen effekt på appen i produksjon. **Løsningen: kjør et nytt build.** EAS genererer en ny profil, eller du gjør det selv med `eas credentials`. Installer deretter det nye buildet på enhetene dine.

Ikke bland dette med TestFlight: et TestFlight-build utløper etter 90 dager, uansett sertifikat. Detaljene finner du i [TestFlight for å teste iPhone-appen din](https://devoria.fr/no/blog/testflight-teste-iphone-app-for-innsending).

### Utløpt eller tilbakekalt sertifikat

Apple er tydelige: hvis medlemskapet ditt er gyldig, blir appene dine som allerede ligger på App Store ikke påvirket. Men du kan ikke lenger laste opp et build signert med dette sertifikatet. Et build som er lastet opp, men ennå ikke sendt inn, kan bli merket Invalid Binary hvis sertifikatet er tilbakekalt. Og [profiler som inneholder et tilbakekalt sertifikat blir ugyldige](https://developer.apple.com/help/account/certificates/revoke-a-certificate).

**Løsningen: lag et nytt sertifikat via `eas credentials` eller ved neste build**, og la EAS lage profilene på nytt. Og tilbakekall aldri et sertifikat som fungerer, bare på refleks.

### Enheten mangler i ad hoc-profilen

Installasjonslenken fungerer hos deg, men ikke på en testers iPhone. Årsak: [Expos dokumentasjon om intern distribusjon](https://docs.expo.dev/build/internal-distribution/) forklarer at bare enheter som var med i profilen da buildet ble laget, kan installere appen.

Løsningen:

1. Registrer enheten med `eas device:create`.
2. Kjør et nytt build i interaktiv modus, innlogget på Apple-kontoen din, slik at EAS oppdaterer profilen. Eller signer det eksisterende buildet på nytt med `eas build:resign`, uten å kompilere alt på nytt.
3. I kontinuerlig integrasjon gjenbruker ikke-interaktiv modus profilen uten å oppdatere listen. Legg til flagget `--refresh-ad-hoc-provisioning-profile`.

På en ny eller nettopp fornyet konto kan Apple bruke 24 til 72 timer på å behandle en ny enhet. Det første buildet som inkluderer den kan derfor feile: vent, og prøv igjen.

### Grensen for sertifikater er nådd

Apple nekter å lage et nytt distribusjonssertifikat. Ofte ligger det gamle sertifikater igjen: laget fra Xcode på en annen Mac eller av en annen build-tjeneste. **Gjenbruk det eksisterende sertifikatet hvis du har .p12-filen. Hvis ikke, tilbakekall det som ikke brukes lenger** i Apples portal. En tilbakekalling påvirker ikke appene dine som allerede er publisert, men den gjør profilene som inneholdt sertifikatet ugyldige.

### «Provisioning profile doesn't include signing certificate»

Denne meldingen fra Xcode betyr at profilen ikke inneholder sertifikatet som har sin private nøkkel på maskinen din. Typisk årsak: du blander Xcodes automatiske signering og credentials fra EAS. **Velg én enkelt kilde til sannhet**: EAS-builds med managed credentials, eller lokale credentials, men ikke begge.

### Varsler stoppet etter at nøkkelen ble tilbakekalt

Hvis du tilbakekaller APNs-nøkkelen din, advarer Expo om at alle apper som bruker den, slutter å motta varsler. Lag en ny nøkkel og last den opp med `eas credentials`. Brukernes Expo Push-tokens endres ikke.

### Ny funksjon lagt til, ugyldig profil

Å aktivere en tjeneste som push-varsler eller App Groups [gjør profilen ugyldig](https://developer.apple.com/help/account/provisioning-profiles/edit-download-or-delete-profiles): den må genereres på nytt. Med EAS skjer synkroniseringen av funksjonene ved hvert build. Hvis profilen fortsatt blir avvist, kan du generere en ny med `eas credentials`.

## Veien videre etter signeringen

Et signert build er bare ett steg. Produktsiden, skjermbildene, personvernet og innsendingen til gjennomgang er samlet i [publisere en app på App Store](https://devoria.fr/no/expertise/publisere-app-pa-app-store). Hvis du ikke har medlemskap ennå, start med [Apple-utviklerkontoen](https://devoria.fr/no/blog/apple-utviklerkonto-pris-gratis-eller-99-dollar). Og for å forstå hvorfor jeg anbefaler Expo til nybegynnere, les [React Native og Expo for en mobilapp](https://devoria.fr/no/expertise/mobilapp-react-native-expo).

## Hvis du forbereder din første publisering

Før første opplasting bør du ta den [gratis diagnosen](https://devoria.fr/no/diagnostic): den forteller deg hva som faktisk blokkerer prosjektet ditt, og sender deg sjekklisten min mot avvisning fra Apple.

For å bygge appen, koble på abonnementer og publisere den uten å slåss med signeringen, følger [iOS & Android Kit](https://devoria.fr/no/kits/ios) prosessen i fire steg med startkoden fra appene mine, i ditt eget tempo.

## Ofte stilte spørsmål

### Hva er en provisioning profile?

Det er filen som gir appen din lov til å kjøre eller sendes til Apple. Den knytter sammen en app-ID, et sertifikat og, avhengig av typen, en liste over enheter. En App Store-profil inneholder ingen enheter, en ad hoc-profil lister noen få.

### Er iOS-utviklersertifikatet gratis?

Det har ingen egen pris: distribusjonssertifikatet er inkludert i Apple Developer Program, til 99 $ i året. Med en gratis Apple-konto lar Xcode deg teste på maks 3 enheter, men profilene utløper etter 7 dager, og publisering er umulig.

### Hvor lenge varer et distribusjonssertifikat fra Apple?

Vanligvis ett år fra det ble opprettet, ifølge Apple. Provisioning-profilene varer også maks 12 måneder. Nøkkelen for push-varsler utløper derimot aldri.

### Hva skjer hvis distribusjonssertifikatet mitt utløper?

Ingenting med appene dine som allerede ligger på App Store, så lenge medlemskapet ditt er gyldig. Du kan bare ikke lenger laste opp nye builds signert med dette sertifikatet. Med EAS lages et nytt sertifikat ved neste build eller med `eas credentials`.

### Trenger jeg en Mac for å lage et iOS-sertifikat?

Nei, ikke hvis du bruker EAS. Du logger inn på Apple-kontoen din fra kommandolinjen, og EAS genererer sertifikatet og profilen, både på Windows og Linux. Uten EAS går den klassiske metoden via Xcode eller Nøkkelring på en Mac.

### Hvor mange enheter kan en ad hoc-profil inneholde?

Kontoen din kan registrere opptil 100 iPhoner per medlemsår, og like mange for hver annen enhetsfamilie. En deaktivert enhet teller fortsatt. Vil du teste med flere, bruk TestFlight.


## Prosjektet ditt

[Review Kit](https://devoria.fr/no/kits/app-review): Sjekklisten min for App Store-gjennomgang, Apples avslag på appene mine med rettelser, sjekklisten for Google Play og tre Claude Code-skills. 499 kr.

[iOS & Android Kit](https://devoria.fr/no/kits/ios): Lag din iPhone- og Android-app med Claude Code: startkoden fra appene mine, veien helt til butikkene og alle kitene. 999 kr.

[Diagnose: dette står mellom deg og iPhone-appen din](https://devoria.fr/no/diagnostic): 7 spørsmål, 60 sekunder: du får vite hva som egentlig hindrer deg i å publisere iPhone-appen din, veien din i 4 steg og kitet som passer deg.
