XCBLOG
On oktober 31, 2021 by adminIOS-kodsigneringshandledning
Detta är del 1 i handledningsserien om iOS-kodsignering. Den här serien behandlar grunderna för iOS-kodsigneringsprocessen. Du hittar alla inlägg i serien länkade nedan
- iOS Code Signing: 1. Kom igång
- iOS Code Signing: 2. Certificate Signing Requests
- iOS Code Signing: 3. Certifikat
- iOS Code Signing: 4. Provisioning Profiles
- iOS Code Signing: 5. Signering av iOS-app
*******************************************************
IOS-enheter kör endast appar som har signerats av betrodda utvecklare om du inte har jailbreakat iOS-enheter. Om du är en iOS-ingenjör måste du ha kämpat med kodsignering någon gång. Eftersom kodsignering är en av de smärtsamma och besvärliga uppgifterna för iOS-utvecklare men de kan inte springa ifrån kodsigneringsaktiviteter. Kodsignering och provisioneringsprofiler har varit ett ständigt irritationsmoment och kommer att fortsätta att vara det tills utvecklare helt och hållet förstår grunderna för kodsignering. Det här är ett inledande inlägg som förklarar kodsigneringsprocessen med dess fördelar och begränsningar.
Om den här serien
Kodsignering av iOS-appar är ett av de heta ämnena för varje iOS-utvecklare. Även om det finns flera resurser tillgängliga på nätet samt att Apple har ren dokumentation om kodsigneringsprocessen är det fortfarande ett mysterium. I den här serien kommer vi att försöka förstå kodsigneringsprocessen från grunden, inklusive vad som behövs för kodsignering till själva kodsigneringsprocessen. Vi kommer också att utforska GUI- samt kommandoradsmetoderna när det är tillämpligt. Vi kommer att börja med Certificate Signing Requests för att få ett certifikat för iOS-utveckling och därefter kommer vi att behandla certifikatet och dess interna delar. Efter att ha förstått certifikaten kommer vi att göra en djupdykning i provisioneringsprofilerna och slutligen kommer vi att förstå kodsigneringsprocessen.
Dessa serier är skrivna med mina egna ord eller på mitt eget språk genom att göra lite forskning på webben och Apples dokumentation. Jag har täckt allt detta referensmaterial i det sista inlägget. Jag har också bifogat några skärmdumpar från Apple Developer portal och Xcode så att läsarna kan förstå begreppen. Jag försökte dölja allt känsligt innehåll, men om det finns något utsatt av misstag, var snäll och hacka mig inte 🙂
Code Signing
Innan vi hoppar in i Apples sätt att kodsignera iOS-appar, låt oss utforska vad som är kodsignering i allmänhet. I det verkliga livet undertecknar vi olika kontrakt, avtal för olika saker. Varför undertecknar vi dessa kontrakt? Vad betyder signering för oss och varför är det viktigt? Det är enkelt eftersom undertecknande av kontrakt skyddar oss juridiskt och vi litar på att de villkor som finns i kontrakten inte kan ändras medan kontraktet är i kraft. Signaturen garanterar också säkerheten att kontraktet kommer från betrodda myndigheter och inte från bedragare. Det betyder att signering av kontrakt ger oss säkerhet, trygghet och förtroende.
Samma sak är kodsignering en process för att digitalt signera alla former av kod för att bekräfta vem som har skrivit koden och garantera att koden inte har ändrats eller korrumperats när den signerades. Vid kodsignering används en kryptografisk hash för att verifiera mjukvarukodens äkthet och integritet. I programvaruvärlden säkerställer kodsignering författarens identitet, kodens integritet, byggsystem och versionshantering så att användarna av programvaran kan känna sig trygga och säkra när de använder dem. Vid kodsignering används olika säkerhetstermer som offentlig nyckel, privat nyckel, certifikat, digitala signaturer osv. Det finns olika metoder för kodsignering som används på olika plattformar, t.ex. Linux, Windows och macOS.
iOS Code Signing
Apple har förmodligen en mycket kraftfull säkerhetsmekanism, bortsett från några få problem på senare tid som du kanske har läst i nyheterna. Det är mycket svårt för svarta hackare att bryta denna mekanism. Apple använder också en stark kodsigneringsmekanism för att ge säkerhet, integritet och trygghet åt de iOS-appar som laddas ner från Apple App Store. Oftast verkar iOS-kodsignering vara magi som sker under huven. Om det fungerar är alla glada och om det inte gör det får alla panik. De flesta iOS-ingenjörer har ingen aning om vad som händer under huven när appar som de har skrivit signeras. Under de senaste dagarna har Apple försökt göra kodsignering mindre smärtsam genom att införa funktionen Automatisk signering i Xcode så att kodsignering inte avbryter det huvudsakliga utvecklingsflödet. Kodsignering på Apple-plattformen bygger på kryptografi med offentliga nycklar enligt X.509-standarden. Vi kommer att diskutera alla dessa verktyg och tekniker senare i den här serien.
Varför lära sig om iOS Code Signing
Då de flesta kodsigneringsuppgifterna hanteras av Xcode nuförtiden, varför ska vi då bry oss om kodsignering och varför ska vi investera vår tid för att lära oss om det?
Här är några av anledningarna till att lära sig mer om kodsigneringens interna delar:
- Det är slut med de dagar då iOS-ingenjörer använde sig av att distribuera iOS-appar från Xcode installerat på den lokala maskinen. Företagen använder DevOps och CI/CD för att distribuera programvaran så snart den är byggd, så alla builds måste automatiseras utan någon mänsklig eller GUI-interaktion.
- Det finns tusentals utvecklartimmar som slösas bort på grund av att Xcodes kodsignering misslyckades och att utvecklaren försöker åtgärda kodsigneringsproblemen genom att återskapa och reparera certifikat och tillhandahålla profiler.
- Den tredje partsverktygen som Fastlane har gjort det mycket enklare för iOS-utvecklare att bygga skript för iOS-utvecklare. Men när Apple ändrade den underliggande tekniken fortsatte Fastlane att gå sönder och utvecklarna tillbringade timmar, dagar och veckor med att åtgärda de trasiga distributionsskripten. I vissa fall måste ingenjörerna vänta tills nya ändringar implementeras i Fastlane.
- Om du är iOS-utvecklare/ingenjör och vill vara iOS-ingenjör i hela ditt liv behöver du inte lära dig dessa saker. Men om du vill växa upp i din karriär måste du känna till de underliggande verktygen, tekniken och hela iOS-ekosystemet i detalj. Du kommer inte att nå fram till iOS Tech Lead eller iOS Tech Architect eller liknande roller om du inte känner till dessa underliggande tekniker, oavsett hur bra du är på iOS-utvecklingskunskap. Som teknisk arkitekt bör du kunna åtgärda kodsignering eller liknande infrastrukturrelaterade problem snabbt och utan att förlita dig på Xcode eller andra verktyg från tredje part.
Hoppar att det räcker för att övertyga om vikten av kodsignering. Det är upp till dig om du vill lära dig det eller lämna det.
Förutsättningar
Låt oss dyka in i världen av iOS kodsignering. Vi kommer att täcka allt från grunden när det gäller vad som behövs och vad det gör under huven. För att komma igång behöver vi följande saker som jag tror att alla redan har om du läser det här inlägget:
- macOS
- Apple Developer Membership
- Xcode 9+
När du har allt detta är du redo att gräva i iOS-kodsignering.
Fördelar med kodsignering
Apple vill att vi ska gå igenom den komplexa kodsigneringsprocessen eftersom den har vissa fördelar för riktiga användare. Användarna av iOS-appar känner sig säkra när de laddar ner apparna från Apples appbutik. Kodsigneringen säkerställer att
- Den legitima utvecklaren har skrivit den här koden och den har en identitet på undertecknaren eller författaren av apparna.
- Kodsigneringen säkerställer att koden inte har ändrats av någon sedan den skrevs av författaren. Det garanterar att kod som producerats av författaren är original och att det inte finns något som injicerats i koden eftersom den är signerad av författaren.
- Användarna kan ladda ner apparna från de utvecklare som de litar på utan att behöva oroa sig alltför mycket för säkerheten.
Kodsignering är till för iOS-användarnas säkerhet så att de kan känna sig trygga när de använder de appar de laddat ner från appbutiken.
Begränsningar av kodsignering
Och även om kodsignering är till för användarnas säkerhet finns det vissa aspekter som inte alltid löser säkerhetsfrågor.
- Kodsignering säkerställer att koden har kommit från en legitim utvecklare som är medlem i Apples utvecklarprogram, men garanterar inte att koden i sig är fri från säkerhetsbrister.
- Kodsignering garanterar inte att app-plugins som laddas dynamiskt under utförandet av appar är säkra.
- Det finns ingen teknik för hantering av digitala rättigheter eller kopieringsskydd för den signerade koden.
Nu har vi behandlat vikten av att lära sig om kodsignering samt fördelar och begränsningar. I nästa inlägg kommer vi att gå igenom det viktiga konceptet där kodsigneringsprocessen startar, dvs. Certificate Signing Requests.
Fortsätt läsa Del 2-: Certificate Signing Requests
Lämna ett svar