iOS Code Signing & Provisioning in een notendop

Ik ontwikkel nu al meer dan 3 jaar Apps en 1 ding waar ik me nog steeds aan irriteer is Code Signing en Provisioning in iOS. Wat zijn Signing Identiteiten? Waarom moet ik als ontwikkelaar Provisioning Profiles aanmaken en me druk maken om zulke dingen? Als je geen goede antwoorden hebt op deze vragen en echt geen zin hebt om de Apple Docs door te lezen, dan is dit hopelijk het artikel dat het hele proces voor jou en voor mij als referentie blootlegt in minder dan 5 minuten.

Ik weet zeker dat velen van jullie dingen snel kunnen leren door gewoon een tekst door te lezen, maar wat ik echt leuk vind, is om dingen uitgelegd te krijgen op een visuele manier met kaders en pijlen. Dus het grootste probleem voor mij is dat er geen grafiek of diagram is dat alle relevante onderdelen samenbrengt en laat zien hoe alles samenwerkt op een gemakkelijk te begrijpen manier. Dit is de reden waarom ik zal proberen er een te maken aan het eind van deze post. Laten we beginnen.

Laten we eerst de belangrijkste termen verzamelen, waar je op zult stuiten als je probeert iets te vinden dat gerelateerd is aan Provisioning en Code Signing op het Internet.

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

Xcode & Member Center

Als u iOS-ontwikkelaar bent, gebruikt u meestal Xcode om uw app en bronnen te maken en te beheren en ze naar de Appstore te uploaden. Dit is alles wat u moet weten over Xcode om deze post te kunnen volgen. Als u er meer over wilt lezen, klik dan hier: Xcode

Nadat u zich heeft geregistreerd voor het Apple Developer Program kunt u inloggen in het Member Center. Dit is de plaats waar u Provisioning Profiles, App IDs, Certificates etc. kunt aanmaken. Delen van het Member Center zijn direct verbonden met Xcode. U kunt bijvoorbeeld uw Signing Identities zien en aanmaken of Provisioning Profiles downloaden en vernieuwen in uw Xcode Settings.

Signing Identity, Public & Private Key, Keychain Application

Een ding dat we moeten ophelderen is de term Signing. Het ondertekenen van uw app stelt iOS in staat om te identificeren wie uw app heeft ondertekend en om te verifiëren dat uw app niet is gewijzigd sinds u hem hebt ondertekend. De onderteken-identiteit bestaat uit een publiek-privaat sleutelpaar dat Apple voor u aanmaakt. Beschouw de publieke sleutel als een mechanisme dat alleen vergrendelt, zodat u de privésleutel moet kennen om gegevens weer te kunnen uitpakken, ontgrendelen of decoderen.

Waar komen het publieke en private sleutelpaar vandaan en hoe vraagt u een certificaat aan dat deze sleutels bevat? Al deze magie gebeurt wanneer u een Certificate Signing Request (CSR) aanmaakt via de Keychain Access Application. Als u dat doet, maakt de Keychain-toepassing een privésleutel en een certSigningRequest-bestand dat u vervolgens naar Apple uploadt. Apple zal het verzoek controleren en een certificaat voor u uitgeven. Het certificaat zal de publieke sleutel bevatten die naar uw systeem kan worden gedownload. Nadat u het hebt gedownload, moet u het in uw Keychain Access Application plaatsen door erop te dubbelklikken. Het wordt gebruikt door cryptografische functies om een unieke handtekening voor uw toepassing te genereren, die in feite uw Code Signing Identity is.

Het certificaat zal ook beschikbaar zijn via het Ledencentrum, maar het zal alleen de openbare sleutel bevatten, dus bewaar die privésleutel veilig.

Een tussenliggend certificaat is ook nodig om in uw sleutelhanger te zitten om ervoor te zorgen dat uw ontwikkelaars- of distributiecertificaat wordt uitgegeven door een andere certificaatautoriteit. Ik weet dat dit een beetje verwarrend klinkt, maar dit is hoe het werkt. Het wordt automatisch geïnstalleerd wanneer u Xcode voor de eerste keer instelt, dus in principe hoeft u er niet veel om te geven omdat het automatisch wordt geconfigureerd.

Provisioning Profile & App ID

Zoals we weten, houdt Apple ervan om dingen veilig te houden, dus het is niet mogelijk om een App te installeren op elk iOS-apparaat dat er is met alleen het certificaat. Dit is waar Provisioning Profiles om de hoek komen kijken. Een Provisioning Profile moet worden geïnstalleerd op elk apparaat waar uw applicatiecode op moet draaien. Elk Development Provisioning Profile bevat een set iPhone Development Certificates, Unique Device Identifiers en een App ID. Een App ID is een tweedelige string die wordt gebruikt om een of meer apps van één ontwikkelteam te identificeren.

De apparaten die in het Development Provisioning Profile zijn gespecificeerd, kunnen alleen worden gebruikt voor testen door die personen van wie de Development Certificates in het profiel zijn opgenomen. Een enkel apparaat kan meerdere provisioning-profielen bevatten. Het verschil tussen Development en Distribution Profiles is dat Distribution Profiles geen Device IDs specificeren. Als je een App wilt uitbrengen die beperkt moet blijven tot een aantal geregistreerde apparaten, moet je daarvoor een Ad-Hoc profiel gebruiken.

Chart

Hier is het schema dat ik bedacht heb. Als je dingen ontdekt die ik over het hoofd heb gezien of verkeerd heb uitgelegd, laat het me dan weten. Zoals gezegd, dit is de eerste keer dat ik echt geprobeerd heb om het binnenwerk van Provisioning en Code Signing te doorgronden. Ik weet dat er nog veel meer over te vertellen valt, maar ik denk dat dit een goed begin is voor alles rond dit onderwerp. Ik zal proberen deze post up to date te houden en alles wat fout is zo snel mogelijk te repareren.

  1. Xcode wordt geïnstalleerd en het Intermediate Certificate wordt in de Keychain geduwd
  2. Certificate Signing Request (CSR) wordt aangemaakt.
  3. De private sleutel wordt tegelijk met het CSR gegenereerd en in de Keychain opgeslagen
  4. Het CSR wordt geüpload naar het Member Center
  5. Apple controleert alles en geeft het certificaat af
  6. Het certificaat wordt naar uw computer gedownload
  7. Het certificaat wordt in de Keychain geduwd en aan de private sleutel gekoppeld om de Code Signing Identity te vormen
  8. Het Provisioning Profile wordt met behulp van een certificaat aangemaakt, App ID en Device Identifiers en gedownload door Xcode
  9. Xcode ondertekent de App en pusht Provisioning Profiles naar het Device
  10. iOS zal controleren of alles correct is geconfigureerd.Dat betekent dat het Provisioning Profile het certificaat moet bevatten dat je hebt gebruikt om de App te ondertekenen, je Apparaat UDID en de juiste App ID.
  11. Je App zou nu moeten draaien!

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.