iOS Code Signing & Provisioning in a Nutshell

Jag har utvecklat appar i mer än tre år nu och en sak som fortfarande irriterar mig är Code Signing och Provisioning i iOS. Vad är signeringsidentiteter? Varför måste jag som utvecklare skapa Provisioning Profiles och bry mig om sådana saker? Om du inte har några bra svar på dessa frågor och verkligen inte vill läsa igenom Apple Docs, är detta förhoppningsvis artikeln som avslöjar hela processen för dig och för mig som referens på mindre än 5 minuter.

Jag är säker på att många av er kan lära er saker snabbt bara genom att läsa igenom en text, men vad jag verkligen gillar, är att få saker förklarade på ett visuellt sätt med rutor och pilar. Så det största problemet för mig är att det inte finns något diagram eller någon grafik som plockar ut alla relevanta delar och visar hur allting fungerar tillsammans på ett lättförståeligt sätt. Detta är anledningen till att jag kommer att försöka skapa ett sådant i slutet av det här inlägget. Låt oss börja.

Först ska vi samla de viktigaste termerna som du kommer att stöta på när du försöker hitta något relaterat till Provisioning och Code Signing på Internet.

  • Xcode
  • Member Center
  • Keychain
  • Signing Identity
  • Private & Public Key
  • Provisioning Profile
  • App. ID

Xcode & Member Center

Om du är iOS-utvecklare använder du vanligtvis Xcode för att skapa och hantera dina appar och resurser och ladda upp dem till Appstore. Detta är allt du behöver veta om Xcode för att följa med i det här inlägget. om du vill läsa mer om det klickar du här: Xcode

När du har registrerat dig för Apple Developer Program kommer du att kunna logga in på Member Center. Det är här du kan skapa Provisioning Profiles, App IDs, certifikat osv. Delar av Member Center är direkt kopplade till Xcode. Du kan till exempel se och skapa dina Signing Identities eller ladda ner och uppdatera Provisioning Profiles i dina Xcode-inställningar.

Signing Identity, Public & Private Key, Keychain Application

En sak som vi behöver reda ut är termen Signing. Genom att signera din app kan iOS identifiera vem som har signerat din app och verifiera att appen inte har ändrats sedan du signerade den. Signeringsidentiteten består av ett offentligt-privat nyckelpar som Apple skapar åt dig. Tänk på den offentliga nyckeln som en låsmekanism, så du måste känna till den privata nyckeln för att packa upp, låsa upp eller avkoda data igen.

Varifrån kommer det offentliga och privata nyckelparet och hur begär du ett certifikat som innehåller dem? All denna magi sker när du skapar en begäran om signering av certifikat (Certificate Signing Request, CSR) via programmet Keychain Access. Om du gör det kommer Keychain Application att skapa en privat nyckel och en certSigningRequest-fil som du sedan laddar upp till Apple. Apple kontrollerar begäran och utfärdar ett certifikat åt dig. Certifikatet kommer att innehålla den offentliga nyckeln som kan laddas ner till ditt system. När du har laddat ner det måste du lägga in det i programmet Keychain Access genom att dubbelklicka på det. Den används av kryptografiska funktioner för att generera en unik signatur för din applikation, vilket i princip är din Code Signing Identity.

Certifikatet kommer också att finnas tillgängligt via medlemscentret, men det kommer bara att innehålla den offentliga nyckeln, så förvara den privata nyckeln på ett säkert ställe.

Ett mellanliggande certifikat måste också finnas i din nyckelknippa för att se till att ditt utvecklar- eller distributionscertifikat är utfärdat av en annan certifikatmyndighet. Jag vet att det låter lite förvirrande, men det är så här det fungerar. Det installeras automatiskt när du ställer in Xcode första gången, så i princip behöver du inte bry dig så mycket om det eftersom det konfigureras automatiskt.

Provisioning Profile & App ID

Som vi vet gillar Apple att hålla saker och ting säkra, så det är inte möjligt att installera en app på någon iOS-enhet där ute med hjälp av enbart certifikatet. Det är här Provisioning Profiles kommer in i bilden. En Provisioning Profile måste installeras på varje enhet som din applikationskod ska köras på. Varje utvecklingsprofil kommer att innehålla en uppsättning iPhone-utvecklingscertifikat, unika enhetsidentifierare och ett app-ID. Ett App-ID är en tvådelad sträng som används för att identifiera en eller flera appar från ett enda utvecklingsteam.

Enheter som anges i Development Provisioning Profile kan endast användas för testning av de personer vars Development Certificates ingår i profilen. En enda enhet kan innehålla flera tillhandahållandeprofiler. Skillnaden mellan utvecklings- och distributionsprofiler är att distributionsprofiler inte anger några enhets-ID:n. Om du vill släppa en app som ska begränsas till ett antal registrerade enheter måste du använda en Ad-Hoc-profil för det.

Karta

Här är den karta jag kom fram till. Om du upptäcker några saker som jag missat eller förklarat på fel sätt får du gärna meddela mig. Som sagt, det här är första gången jag verkligen försöker sätta mig in i det inre av Provisioning och Code Signing. Jag vet att det finns mycket mer att prata om, men jag tycker att detta är en bra start för allt som rör detta ämne. Jag kommer att försöka hålla det här inlägget uppdaterat och rätta till allt som är fel så fort jag kan.

  1. Xcode kommer att installeras och Intermediate Certificate kommer att skjutas in i nyckelknippan
  2. Certificate Signing Request (CSR) kommer att skapas.
  3. Den privata nyckeln genereras tillsammans med CSR-skapandet och lagras i nyckelringen
  4. CSR laddas upp till Member Center
  5. Apple kontrollerar allt och utfärdar certifikatet
  6. Certifikatet laddas ner till din dator
  7. Certifikatet skjuts in i nyckelringen och kopplas ihop med den privata nyckeln för att bilda Code Signing Identity
  8. Provisioneringsprofilen skapas med ett certifikat, App-ID och enhetsidentifierare och hämtas av Xcode
  9. Xcode signerar appen och skickar Provisioning Profiles till enheten
  10. iOS kontrollerar om allt är korrekt konfigurerat.Det innebär att Provisioning Profile bör innehålla det certifikat som du använde för att signera appen, enhetens UDID och rätt app-ID.
  11. Din app bör köras nu!

Lämna ett svar

Din e-postadress kommer inte publiceras.