XCBLOG
On octombrie 31, 2021 by adminTutoriale de semnare a codurilor iOS
Aceasta este partea 1 din seria de tutoriale de semnare a codurilor iOS. Această serie acoperă elementele fundamentale ale procesului de semnare a codului iOS. Puteți găsi toate postările din serie legate mai jos
- iOS Code Signing: 1. Getting Started
- iOS Code Signing: 2. Certificate Signing Requests
- iOS Code Signing: 3. Certificates
- iOS Code Signing: 4. Certificates
- iOS Code Signing: 4. Provisioning Profiles
- iOS Code Signing: 5. Signing iOS App
*******************************************************
În mod original, dispozitivele iOS rulează numai aplicații care au fost semnate de dezvoltatori de încredere, cu excepția cazului în care aveți dispozitive iOS jailbroken. Dacă sunteți un inginer iOS, trebuie să vă fi luptat la un moment dat cu semnarea codului. Deoarece semnarea codului este una dintre sarcinile dureroase și greoaie pentru dezvoltatorii iOS, dar aceștia nu pot fugi de activitățile de semnare a codului. Semnarea codului și profilurile de provizionare au fost o neplăcere continuă și vor continua să fie acolo până când dezvoltatorii vor înțelege complet elementele de bază ale semnării codului. Acesta este un post introductiv care explică procesul de semnare a codului cu beneficiile și limitările sale.
Despre această serie
Semnarea codului aplicațiilor iOS este unul dintre subiectele fierbinți pentru fiecare dezvoltator iOS. Deși există mai multe resurse disponibile online, precum și Apple are o documentație curată privind procesul de semnare a codului, acesta este încă un mister. În această serie, vom încerca să înțelegem procesul de semnare a codului de la zero, inclusiv ceea ce este necesar pentru semnarea codului până la procesul propriu-zis de semnare a codului. De asemenea, vom explora atât GUI, cât și modalitățile de a face lucrurile în linie de comandă, ori de câte ori este cazul. Vom începe cu Cererile de semnare a certificatelor pentru a obține certificatul de dezvoltare iOS, apoi vom acoperi certificatul și părțile sale interne. După ce vom înțelege certificatele, vom face o scufundare în profunzime în profilurile de provizionare și, în cele din urmă, vom înțelege procesul de semnare a codului.
Aceste serii sunt scrise în propriile mele cuvinte sau în limbajul meu prin efectuarea unor cercetări pe web și în documentația Apple. Am acoperit toate aceste materiale de referință în postul final. Am atașat, de asemenea, câteva capturi de ecran din portalul Apple Developer și Xcode, astfel încât cititorii să poată înțelege conceptele. Am încercat să ascund tot conținutul sensibil, dar dacă există ceva expus din greșeală, vă rog să nu mă hackuiți 🙂
Code Signing
Înainte de a trece la modul în care Apple semnează codurile aplicațiilor iOS, să explorăm ce este semnarea codurilor în general. În viața reală, semnăm diferite contracte, acorduri pentru diverse lucruri. De ce semnăm aceste contracte? ce înseamnă semnătura pentru noi și de ce este importantă? Este simplu, deoarece semnarea contractelor ne protejează din punct de vedere juridic și avem încredere că orice termeni și condiții din contracte nu pot fi modificate cât timp contractul este în vigoare. Semnătura asigură, de asemenea, securitatea faptului că contractul provine de la autorități de încredere și nu de la escroci. Aceasta înseamnă că semnarea contractelor ne oferă securitate, siguranță și încredere.
În mod similar, semnarea codului este procesul de semnare digitală a oricărei forme de cod pentru a confirma cine a scris codul și pentru a garanta că acesta nu a fost modificat sau corupt în momentul în care a fost semnat. Semnarea codului utilizează un hash criptografic pentru a verifica autenticitatea și integritatea codului software. În lumea software-ului, semnarea codului asigură identitatea autorului, integritatea codului, sistemul de construire și versiunea, astfel încât utilizatorii de software să se simtă în siguranță în timp ce îl folosesc. Semnarea codului utilizează diverși termeni de securitate, cum ar fi cheia publică, cheia privată, certificatele, semnăturile digitale etc. Există diferite abordări ale semnării codului utilizate pe diferite platforme, de exemplu Linux, Windows, macOS.
Semnarea codului pe iOS
Apple se presupune că are un mecanism de securitate foarte puternic, în afară de câteva defecțiuni recente pe care poate le-ați citit în presă. Este foarte greu pentru hackerii black-hat să spargă acest mecanism. Apple folosește, de asemenea, un mecanism puternic de semnare a codului pentru a asigura securitatea, integritatea și siguranța aplicațiilor iOS descărcate din Apple App Store. De cele mai multe ori, semnarea codului iOS pare a fi o magie care se întâmplă sub capotă. Dacă funcționează, toată lumea este fericită, iar dacă nu funcționează, toată lumea a intrat în panică. Majoritatea inginerilor iOS habar nu au ce se întâmplă sub capotă atunci când aplicațiile scrise de ei sunt semnate. În ultimele zile, Apple a încercat să facă semnarea codului mai puțin dureroasă prin introducerea funcției de semnare automată în Xcode, astfel încât activitatea de semnare a codului să nu întrerupă fluxul principal de dezvoltare. Semnarea codului pe platforma Apple se bazează pe criptografia cu cheie publică pe standardul X.509. Vom discuta despre toate aceste instrumente și tehnici mai târziu în această serie.
De ce să învățăm despre semnarea codului iOS
Acum majoritatea sarcinilor de semnare a codului sunt gestionate de Xcode în aceste zile, atunci de ce ar trebui să ne intereseze semnarea codului și de ce ar trebui să ne investim timpul pentru a învăța despre aceasta?
Iată câteva dintre motivele pentru a învăța despre elementele interne de semnare a codului:
- Au apus zilele în care inginerii iOS obișnuiau să implementeze aplicații iOS din Xcode instalat pe mașina locală. Companiile adoptă DevOps și CI/CD pentru a implementa software-ul imediat ce este construit, astfel încât toate construcțiile trebuie să fie automatizate fără interacțiuni umane sau GUI.
- Există mii de ore de dezvoltare irosite din cauza faptului că semnarea codului de către Xcode a eșuat, iar dezvoltatorul încearcă să rezolve problemele de semnare a codului prin regenerarea și repararea certificatelor și a profilurilor de provizionare.
- Uneltele terțe, cum ar fi Fastlane, au făcut ca scripturile de construcție să fie mult mai ușoare pentru dezvoltatorii iOS. Cu toate acestea, atunci când Apple a făcut schimbări în tehnologiile de bază, Fastlane continuă să se întrerupă, iar dezvoltatorul petrece ore, zile și săptămâni reparând scripturile de implementare rupte. În unele cazuri, inginerii trebuie să aștepte până când noile modificări sunt implementate în Fastlane.
- Dacă sunteți dezvoltator/inginer iOS și doriți să fiți inginer iOS pentru toată viața, atunci nu trebuie să învățați despre aceste lucruri. Cu toate acestea, dacă doriți să creșteți în carieră, atunci trebuie să cunoașteți în detaliu instrumentele de bază, tehnologiile și întregul ecosistem iOS. Nu vei ajunge la iOS Tech Lead sau iOS Tech Architect sau la roluri similare dacă nu știi despre aceste tehnologii de bază, indiferent cât de bune sunt abilitățile tale de dezvoltare iOS. În calitate de arhitect tehnic, ar trebui să fii capabil să rezolvi probleme legate de semnarea codului sau probleme similare legate de infrastructură rapid și fără să te bazezi pe Xcode sau alte instrumente terțe.
Sper că este suficient pentru a convinge importanța semnării codului. Depinde de tine dacă vrei să o înveți sau să o lași.
Precondiții
Să ne scufundăm în lumea semnării codului iOS. Vom acoperi totul de la zero în ceea ce privește ceea ce este necesar și ceea ce face sub capotă. Pentru a începe, avem nevoie de următoarele lucruri pe care cred că toată lumea le are deja dacă citiți această postare.
- macOS
- Apple Developer Membership
- Xcode 9+
După ce aveți toate acestea, sunteți gata să intrați în chestiunea semnării codului iOS.
Beneficii ale semnării codului
Apple vrea ca noi să trecem prin procesul complex de semnare a codului pentru că acesta are unele beneficii pentru utilizatorii reali. Utilizatorii de aplicații iOS se simt în siguranță atunci când descarcă aplicațiile din magazinul de aplicații Apple. Semnarea codului asigură că
- Producătorul legitim a scris acest cod și are o identitate a semnatarului sau a autorului aplicațiilor.
- Semnarea codului asigură că codul nu a fost modificat de cineva de când a fost scris de autor. Garantează că codul produs de autor este original și că nu există nimic injectat în cod din moment ce a fost semnat de autor.
- Utilizatorii pot descărca aplicațiile de la dezvoltatorii în care au încredere fără să-și facă prea multe griji cu privire la securitate.
Semnarea codului este pentru siguranța și securitatea utilizatorilor iOS, astfel încât aceștia să se simtă în siguranță folosind aplicațiile pe care le-au descărcat din magazinul de aplicații.
Limitări ale semnării codului
Deși semnarea codului este pentru securitatea utilizatorilor, există unele aspecte care nu rezolvă tot timpul problemele de securitate.
- Semnarea codului asigură că codul provine de la un dezvoltator legitim care este membru al programului Apple Developer, dar nu garantează că codul în sine este lipsit de vulnerabilități de securitate.
- Semnarea codului nu garantează că plugin-urile aplicațiilor care se încarcă dinamic în timpul execuției aplicațiilor sunt sigure.
- Nu există o tehnologie de gestionare a drepturilor digitale sau de protecție împotriva copierii pentru codul semnat.
Acum, am acoperit importanța de a învăța despre semnarea codului și beneficiile și limitarea acestuia. În următoarea postare, vom trece în revistă conceptul important în care începe procesul de semnare a codului, și anume Certificate Signing Requests.
Continuați să citiți Partea 2-: Cereri de semnare a certificatelor
.
Lasă un răspuns