XCBLOG
On oktober 31, 2021 by adminiOS Code Signing Tutorials
Dit is deel-1 van de iOS Code Signing tutorial serie. Deze serie behandelt de grondbeginselen van het iOS code signing proces. U kunt alle berichten in de serie hieronder vinden
- iOS Code Signing: 1. Aan de slag
- iOS Code Signing: 2. Certificate Signing Requests
- iOS Code Signing: 3. Certificaten
- iOS Code Signing: 4. Provisioning Profiles
- iOS Code Signing: 5. iOS App ondertekenen
*******************************************************
In werkelijkheid draaien iOS-apparaten alleen apps die zijn ondertekend door vertrouwde ontwikkelaars, tenzij je iOS-apparaten hebt gejailbreakt. Als je een iOS-engineer bent, moet je op een bepaald moment hebben geworsteld met code signing. Als code ondertekening is een van de pijnlijke en omslachtige taken voor iOS-ontwikkelaars, maar ze kunnen niet weglopen van code ondertekening activiteiten. Code signing en provisioning profielen zijn een voortdurende ergernis en zullen er blijven totdat ontwikkelaars de basis van de code signing volledig begrijpen. Dit is een inleidende post waarin het code signing proces met zijn voordelen en beperkingen wordt uitgelegd.
Over deze serie
Code signing van de iOS apps is een van de hete hangijzers voor elke iOS ontwikkelaar. Hoewel er meerdere bronnen online beschikbaar zijn en Apple schone documentatie heeft over code signing proces, is het nog steeds een mysterie. In deze serie, zullen we proberen om het code signing proces te begrijpen vanaf het begin, inclusief wat er nodig is om code signing tot aan het eigenlijke code signing proces zelf. We zullen ook de GUI en commandoregel manieren verkennen om dingen te doen wanneer van toepassing. We beginnen met Certificate Signing Requests om iOS Development certificaten te verkrijgen, daarna behandelen we de certificaten en hun interne onderdelen. Na het begrijpen van de certificaten, zullen we diep duiken in de provisioning profielen en ten slotte zullen we het code signing proces begrijpen.
Deze serie is geschreven in mijn eigen woorden of taal door wat onderzoek te doen op het web en Apple’s documentatie. Ik heb al dit referentiemateriaal behandeld in de laatste post. Ik heb ook een aantal screenshots van Apple Developer portal en Xcode bijgevoegd, zodat lezers de concepten kunnen begrijpen. Ik heb geprobeerd om alle gevoelige inhoud te verbergen, maar als er iets is blootgesteld per ongeluk, hack me dan niet 🙂
Code Signing
Voordat we springen in Apple’s manier van code signing iOS apps, laten we eerst onderzoeken wat code signing in het algemeen is. In het echte leven, ondertekenen we verschillende contracten, overeenkomsten voor verschillende dingen. Waarom ondertekenen we die contracten? Wat betekent ondertekenen voor ons en waarom is het belangrijk? Het is eenvoudig omdat het ondertekenen van contracten ons juridisch beschermt en we erop vertrouwen dat de voorwaarden in het contract niet kunnen worden gewijzigd zolang het contract van kracht is. De handtekening biedt ook de zekerheid dat het contract afkomstig is van betrouwbare autoriteiten en niet van oplichters. Dit betekent dat het ondertekenen van contracten ons zekerheid, veiligheid en vertrouwen geeft.
Het ondertekenen van code is het proces waarbij elke vorm van code digitaal wordt ondertekend om te bevestigen wie de code heeft geschreven en te garanderen dat de code niet is gewijzigd of beschadigd toen hij werd ondertekend. De code signing maakt gebruik van een cryptografische hash om de authenticiteit en integriteit van de softwarecode te verifiëren. In de softwarewereld garandeert code signing de identiteit van de auteur, de integriteit van de code, het build-systeem en de versionering, zodat de gebruikers van de software zich veilig en zeker voelen bij het gebruik ervan. Voor code signing worden verschillende veiligheidstermen gebruikt, zoals een publieke sleutel, een private sleutel, certificaten, digitale handtekeningen enz. Er zijn verschillende benaderingen van code signing die op verschillende platforms worden gebruikt, zoals Linux, Windows, macOS.
iOS Code Signing
Apple heeft naar verluidt een zeer krachtig beveiligingsmechanisme, afgezien van enkele recente problemen die u misschien in het nieuws hebt gelezen. Het is erg moeilijk voor black-hat hackers om dit mechanisme te breken. Apple gebruikt ook een sterk codeondertekeningsmechanisme om de veiligheid, integriteit en beveiliging te garanderen van de iOS-apps die worden gedownload van de Apple App Store. Meestal lijkt de ondertekening van iOS-code magie te zijn die onder de motorkap gebeurt. Als het werkt is iedereen blij en als het niet werkt raakt iedereen in paniek. De meeste iOS engineers hebben geen idee wat er onder de motorkap gebeurt als apps die zij hebben geschreven worden gesigneerd. In de afgelopen dagen heeft Apple geprobeerd om het ondertekenen van code minder pijnlijk te maken door de introductie van de Automatic Signing functie in Xcode, zodat het ondertekenen van code de hoofd ontwikkelstroom niet onderbreekt. Code signing op het Apple platform is gebaseerd op public-key cryptografie volgens de X.509 standaard. We zullen al deze tools en technieken later in deze serie bespreken.
Waarom leren over iOS Code Signing
Als de meeste code signing taken worden afgehandeld door Xcode deze dagen, waarom zouden we ons dan zorgen maken over de code signing en waarom zouden we onze tijd investeren om erover te leren?
Hier volgen enkele redenen om meer te leren over de code signing internals:
- De dagen dat iOS-engineers iOS-apps implementeerden vanuit Xcode, geïnstalleerd op de lokale machine, zijn voorbij. Bedrijven passen DevOps en CI/CD toe om software te implementeren zodra deze is gebouwd, dus alle builds moeten worden geautomatiseerd zonder menselijke of GUI-interacties.
- Er zijn duizenden uren van ontwikkelaars verspild omdat Xcode’s code signing mislukte en ontwikkelaar probeert de code signing problemen op te lossen door het regenereren en repareren van certificaten en provisioning profielen.
- De derde partij tools zoals Fastlane heeft build scripting veel gemakkelijker gemaakt voor de iOS-ontwikkelaars. Echter, wanneer Apple wijzigingen aanbrengt in de onderliggende technologieën, blijft Fastlane breken en zijn ontwikkelaars uren, dagen en weken bezig met het repareren van de gebroken deployment scripts. In sommige gevallen moeten engineers wachten tot nieuwe wijzigingen worden doorgevoerd in Fastlane.
- Als je iOS ontwikkelaar/engineer bent en je wilt je hele leven iOS engineer blijven, dan hoef je niet over deze dingen te leren. Echter, als je wilt opgroeien in je carrière dan moet je de onderliggende tools, technologieën en het hele iOS ecosysteem in detail kennen. Je zult geen iOS Tech Lead of iOS Tech Architect of soortgelijke rollen krijgen als je niet op de hoogte bent van deze onderliggende technologieën, ongeacht hoe goed je bent in je iOS ontwikkelingsvaardigheden. Als een tech architect, moet je in staat zijn om code signing of soortgelijke infrastructuur gerelateerde problemen snel op te lossen en zonder te vertrouwen op Xcode of andere tools van derden.
Hoop dat is genoeg om het belang van code signing te overtuigen. Het is aan jou om het te leren of te laten.
Voorvereiste
Let’s duik in de wereld van iOS code signing. We zullen alles vanaf nul behandelen in termen van wat nodig is en wat het doet onder de motorkap. Om te beginnen hebben we de volgende dingen nodig, waarvan ik denk dat iedereen die dit bericht leest ze al heeft.
- macOS
- Apple Developer Membership
- Xcode 9+
Als je dit allemaal hebt, ben je klaar om je te verdiepen in de iOS code signing stuff.
Voordelen van Code Signing
Apple wil dat we door het complexe code signing proces gaan omdat het een aantal voordelen heeft voor echte gebruikers. De gebruikers van iOS-apps voelen zich veilig wanneer ze de apps downloaden van de Apple app store. De code signing zorgt ervoor dat
- De legitieme ontwikkelaar heeft deze code geschreven en het heeft een identiteit van de ondertekenaar of auteur van de apps.
- Code signing zorgt ervoor dat code niet is gewijzigd door iemand sinds geschreven door de auteur. Het garandeert dat de code die door de auteur is geproduceerd origineel is en dat er niets in de code is geïnjecteerd omdat deze door de auteur is ondertekend.
- Gebruikers kunnen de apps downloaden van de ontwikkelaars die ze vertrouwen zonder zich al te veel zorgen te maken over de beveiliging.
Code ondertekening is voor de veiligheid en beveiliging van de iOS-gebruikers, zodat ze zich veilig voelen met behulp van de apps die ze hebben gedownload van app store.
Beperkingen van de Code Signing
Hoewel code ondertekening is voor de veiligheid van de gebruikers, zijn er enkele aspecten die niet de veiligheidsproblemen altijd aan te pakken.
- Code signing zorgt ervoor dat de code afkomstig is van een legitieme ontwikkelaar die lid is van het Apple Developer-programma, maar garandeert niet dat de code zelf vrij is van beveiligingslekken.
- Code signing garandeert niet dat app-plugins die dynamisch worden geladen tijdens de uitvoering van apps veilig zijn.
- Er is geen digitaal rechtenbeheer of kopieerbeveiligingstechnologie voor de ondertekende code.
Nu dat, hebben we het belang van het leren over code signing en de voordelen en beperking behandeld. In de volgende post, zullen we gaan door het belangrijke concept waar code signing proces begint dwz Certificate Signing Requests.
Doorgaan met lezen Deel 2-: Certificate Signing Requests
Geef een antwoord