XCBLOG
On oktober 31, 2021 by adminInstruktionsvideoer om iOS-kodesignering
Dette er del 1 i serien af instruktionsvideoer om iOS-kodesignering. Denne serie dækker de grundlæggende principper for iOS-kodesigneringsprocessen. Du kan finde alle indlæg i serien linket nedenfor
- iOS-kodesignering: 1. Kom godt i gang
- iOS-kodesignering: 2. Certifikatsigneringsanmodninger
- iOS-kodesignering: 3. Certifikater
- iOS-kodesignering: 4. Provisioning Profiles
- iOS Code Signing: 5. Signering af iOS-app
*******************************************************
Egentlig kan iOS-enheder kun køre apps, der er signeret af betroede udviklere, medmindre du har jailbroken iOS-enheder. Hvis du er iOS-tekniker, må du have kæmpet med kodesignering på et tidspunkt. Da kodesignering er en af de smertefulde og besværlige opgaver for iOS-udviklere, men de kan ikke løbe væk fra kodesigneringsaktiviteter. Kodesignering og provisioneringsprofiler har været et vedvarende irritationsmoment og vil fortsætte med at være der, indtil udviklerne helt forstår det grundlæggende i kodesignering. Dette er et indledende indlæg, der forklarer kodeunderskriftsprocessen med dens fordele og begrænsninger.
Om denne serie
Kodeunderskrift af iOS-apps er et af de varme emner for alle iOS-udviklere. Selv om der er flere ressourcer tilgængelige online, samt Apple har ren dokumentation om kodesigneringsprocessen, er det stadig et mysterium. I denne serie vil vi forsøge at forstå kodesigneringsprocessen fra bunden, herunder hvad der er nødvendigt for at kodesignere til selve kodesigneringsprocessen. Vi vil også udforske GUI såvel som kommandolinje måder at gøre tingene på, når det er relevant. Vi vil starte fra Certificate Signing Requests for at få iOS Development-certifikat, derefter vil vi dække certifikatet og dets interne dele. Efter at have forstået certifikaterne vil vi foretage et dybdegående dyk i provisioning-profilerne, og til sidst vil vi forstå kodeunderskriftsprocessen.
Denne serie er skrevet med mine egne ord eller sprog ved at lave noget research på nettet og Apples dokumentation. Jeg har dækket alle disse referencematerialer i det sidste indlæg. Jeg har også vedhæftet nogle skærmbilleder fra Apple Developer portal og Xcode, så læserne kan forstå begreberne. Jeg forsøgte at skjule alt det følsomme indhold, men hvis der er noget udsat ved en fejltagelse, skal du ikke hacke mig 🙂
Code Signing
Hvor vi hopper ind i Apples måde at kode signere iOS-apps på, lad os undersøge, hvad der er kode signering i almindelighed. I det virkelige liv underskriver vi forskellige kontrakter, aftaler for forskellige ting. Hvorfor underskriver vi disse kontrakter? Hvad betyder underskrift for os, og hvorfor er det vigtigt? Det er enkelt, fordi det at underskrive kontrakter beskytter os juridisk, og vi har tillid til, at de vilkår og betingelser i kontrakterne ikke kan ændres, mens kontrakten er på plads. Signaturen sikrer også sikkerhed for, at kontrakten kommer fra betroede myndigheder og ikke fra svindlere. Det betyder, at signering af kontrakter giver os sikkerhed, tryghed og tillid.
Sådan er kodesignering processen med digital signering af enhver form for kode for at bekræfte, hvem der har skrevet koden, og garantere, at koden ikke er blevet ændret eller ødelagt, da den blev signeret. Kodesignering anvender en kryptografisk hash til at verificere ægtheden og integriteten af softwarekoden. I softwareverdenen sikrer kodesignering forfatterens identitet, kodens integritet, buildsystem og versionering, så brugerne af softwaren kan føle sig sikre og trygge, når de bruger den. Ved kodesignering anvendes forskellige sikkerhedstermer som f.eks. offentlig nøgle, privat nøgle, certifikater, digitale signaturer osv. Der er forskellige tilgange til kodesignering, der anvendes på de forskellige platforme, f.eks. Linux, Windows og macOS.
iOS Code Signing
Apple har angiveligt en meget effektiv sikkerhedsmekanisme bortset fra nogle få nylige fejl, som du måske har læst i nyhederne. Det er meget svært for blackhat-hackere at bryde denne mekanisme. Apple bruger også en stærk kode signeringsmekanisme for at sikre sikkerheden, integriteten og sikkerheden i iOS-apps, der downloades fra Apple App Store. Det meste af tiden synes iOS-kodesignering at være magi, der sker under motorhjelmen. Hvis det virker, er alle glade, og hvis det ikke gør det, går alle i panik. De fleste iOS-ingeniører har ingen anelse om, hvad der sker under motorhjelmen, når de apps, de har skrevet, bliver signeret. I de seneste dage har Apple forsøgt at gøre kodesignering mindre smertefuldt ved at indføre funktionen Automatisk signering i Xcode, så kodesigneringsaktiviteten ikke afbryder det primære udviklingsflow. Kodesignering på Apple-platformen er baseret på kryptografi med offentlige nøgler på X.509-standarden. Vi vil diskutere alle disse værktøjer og teknikker senere i denne serie.
Hvorfor lære om iOS Code Signing
Da de fleste af kodeunderskrivningsopgaverne håndteres af Xcode i disse dage, hvorfor skal vi så bekymre os om kodeunderskrivningen, og hvorfor skal vi investere vores tid i at lære om det?
Her er nogle af grundene til at lære om de interne funktioner for kodesignering:
- De dage er forbi, hvor iOS-ingeniører plejede at implementere iOS-apps fra Xcode installeret på den lokale maskine. Virksomheder indfører DevOps og CI/CD for at distribuere software, så snart den er bygget, så alle builds skal automatiseres uden menneskelige eller GUI-interaktioner.
- Der er tusindvis af udviklertimer spildt, fordi Xcodes kodesignering mislykkedes, og udvikleren forsøger at løse kodesigneringsproblemerne ved at regenerere og reparere certifikater og tilvejebringe profiler.
- Den tredjepartsværktøjer som Fastlane har gjort build scripting meget nemmere for iOS-udviklerne. Men når Apple har foretaget ændringer i de underliggende teknologier, bliver Fastlane ved med at gå i stykker, og udvikleren bruger timer, dage og uger på at reparere de ødelagte implementeringsskripter. I nogle tilfælde er ingeniører nødt til at vente, indtil nye ændringer bliver implementeret i Fastlane.
- Hvis du er iOS-udvikler/ingeniør og ønsker at være iOS-ingeniør hele dit liv, behøver du ikke at lære om disse ting. Men hvis du ønsker at vokse op i din karriere, så skal du kende de underliggende værktøjer, teknologier og hele iOS-økosystemet i detaljer. Du vil ikke komme til iOS Tech Lead eller iOS Tech Architect eller lignende stillinger, hvis du ikke kender til disse underliggende teknologier, uanset hvor god du er til iOS-udvikling, uanset hvor god du er til iOS-udvikling. Som teknisk arkitekt bør du være i stand til at løse problemer med kodesignering eller lignende infrastrukturrelaterede problemer hurtigt og uden at være afhængig af Xcode eller andre tredjepartsværktøjer.
Håber det er nok til at overbevise om vigtigheden af kodesignering. Det er op til dig, om du vil lære det eller lade være.
Forudsætninger
Lad os dykke ned i verdenen af iOS-koderegistrering. Vi vil dække alt fra bunden i form af hvad der er nødvendigt, og hvad det gør under kølerhjelmen. For at komme i gang skal vi bruge følgende ting, som jeg tror, at alle allerede har, hvis du læser dette indlæg:
- macOS
- Apple Developer Membership
- Xcode 9+
Når du har alt dette, er du klar til at gå i gang med iOS-kodesignering.
Fordele ved kodesignering
Apple ønsker, at vi skal gennemgå den komplekse kodesigneringsproces, fordi den har nogle fordele for de rigtige brugere. Brugerne af iOS-apps føler sig sikre, når de downloader apps fra Apples appstore. Kodesigneringen sikrer, at
- Den legitime udvikler har skrevet denne kode, og den har en identitet på underskriveren eller forfatteren af appsene.
- Kodesignering sikrer, at koden ikke er blevet ændret af nogen, siden den blev skrevet af forfatteren. Det garanterer, at den kode, der er produceret af forfatteren, er original, og at der ikke er sprøjtet noget ind i koden, siden den er signeret af forfatteren.
- Brugere kan downloade apps fra de udviklere, som de har tillid til, uden at bekymre sig for meget om sikkerheden.
Kodesignering er for iOS-brugernes sikkerhed, så de føler sig trygge ved at bruge de apps, de har downloadet fra app-butikken.
Begrænsninger ved kodesignering
Selv om kodesignering er for brugernes sikkerhed, er der nogle aspekter, der ikke altid tager højde for sikkerhedsproblemer.
- Kodesignering sikrer, at koden er kommet fra en legitim udvikler, der er medlem af Apples udviklerprogram, men garanterer ikke, at selve koden er fri for sikkerhedshuller.
- Kodesignering garanterer ikke, at app-plugins, der indlæses dynamisk under udførelsen af apps, er sikre.
- Der er ingen digital rettighedsstyring eller kopibeskyttelsesteknologi for den signerede kode.
Nu har vi dækket vigtigheden af at lære om kodesignering og fordele og begrænsninger. I det næste indlæg vil vi gennemgå det vigtige koncept, hvor kode signeringsprocessen starter, dvs. Certificate Signing Requests.
Fortsæt læsning af del 2-: Certificate Signing Requests
Skriv et svar