Ce este un profil de provizionare și semnarea codului în iOS?

Sursa: Stackoverflow și internet 🤓.

Definiția Apple: Un profil de provizionare este o colecție de entități digitale care leagă în mod unic dezvoltatorii și dispozitivele de o echipă de dezvoltare iPhone autorizată și permite ca un dispozitiv să fie utilizat pentru testare.

Spre deosebire de Android, nu puteți instala orice aplicație pe un dispozitiv iOS. Aceasta trebuie să fie semnată mai întâi de Apple. Cu toate acestea, atunci când dezvoltați o aplicație, probabil că doriți să o testați înainte de a o trimite la Apple pentru aprobare. Profilul de provizionare acționează ca o legătură între dispozitiv și contul de dezvoltator. În timpul dezvoltării, alegeți ce dispozitive pot rula aplicația dvs. și ce servicii de aplicații poate accesa aplicația dvs. Un profil de provizionare este descărcat din contul dumneavoastră de dezvoltator și încorporat în pachetul de aplicații, iar întregul pachet este semnat cu cod. Un profil de provizionare pentru dezvoltare trebuie să fie instalat pe fiecare dispozitiv pe care doriți să rulați codul aplicației dumneavoastră. Dacă informațiile din profilul de provizionare nu corespund anumitor criterii, aplicația dvs. nu se va lansa.

Care profil Development Provisioning Profile va conține:

  • Certificate de dezvoltare – certificat de dezvoltare. Acestea sunt pentru dezvoltatorii care doresc să testeze aplicația pe un dispozitiv fizic în timp ce scriu codul.
  • Unique Device Identifiers (Lista dispozitivelor pe care poate rula aplicația)
  • un App ID (acesta poate include un wild card * pentru a fi utilizat pentru mai multe aplicații cu identificatori de pachete similare). – Un App ID este un șir format din două părți utilizat pentru a identifica una sau mai multe aplicații de la o singură echipă de dezvoltare.

Dispozitivele specificate în cadrul profilului de provizionare pot fi utilizate pentru testare numai de către acele persoane ale căror certificate de dezvoltare iPhone sunt incluse în profil. A single device can contain multiple provisioning profiles.

So, What is happening when we connect the device to xcode and installs the app??

When you install the application on a device the following things happens:

  • the provisioning profile in the Mac goes to the developer certificate in your key chain.
  • xcode uses the certificate to sign the code.
  • device’s UUID is matched with the IDs in the provisioning profile.
  • AppID in the provisioning profile is matched with the bundle identifier in the app.
  • The entitlements required are associated with the App ID.
  • The private key used to sign the app matches the public key in the certificate.

Here is a screenshot from xcode signing section:

SO, din imaginea de mai sus, puteți vedea că AppID este verificat, certificatul este validat, echipa se potrivește, capacitățile și drepturile se potrivesc .

Dacă toți pașii de mai sus sunt reușiți, binarul semnat este trimis către dispozitiv și este validat în raport cu același profil de provizionare din aplicație și, în cele din urmă, este lansat. Dacă oricare dintre aceste condiții eșuează, atunci aplicația nu se va instala – și veți vedea o pictogramă a aplicației în gri.

Diferența dintre profilurile de dezvoltare și de distribuție este că profilurile de distribuție nu specifică niciun ID de dispozitiv. Dacă doriți să lansați o aplicație care trebuie să fie limitată la un număr de dispozitive înregistrate, trebuie să utilizați un profil Ad-Hoc pentru aceasta.

Profilele de distribuție sunt utilizate pentru a trimite aplicația la App Store pentru distribuție. După ce aplicația este revizuită de Apple, aceștia semnează aplicația cu propria semnătură, care poate rula pe orice dispozitiv.

Toate acestea sunt bune, dar ce este semnarea codului?

Semnarea aplicației permite iOS să identifice cine a semnat aplicația și să verifice dacă aceasta nu a fost modificată de când ați semnat-o. Identitatea de semnare constă într-o pereche de chei publice-private pe care Apple o creează pentru dumneavoastră.

Criptografie asimetrică

Criptografia asimetrică utilizează o cheie publică și o cheie privată. Utilizatorii trebuie să păstreze cheia privată pentru ei înșiși, dar pot partaja cheia publică. Și folosind aceste chei publice și private, un utilizator poate dovedi că este într-adevăr el însuși.

Cum funcționează criptografia asimetrică?”

Să presupunem că există un UtilizatorA și un UtilizatorB .

  • UtilizatorulA creează o CheiePrivatăA + CheiePublicăA.
  • UtilizatorulB creează o PrivateKeyB + PublicKeyB.

Pentru a securiza comunicarea dintre UtilizatorulA și UtilizatorulB,

  • UtilizatorulA împărtășește cheia sa PublicKeyA cu UtilizatorulB .
  • UserB shares his PublicKeyB with UserA.

… and both users keep the private key with themselves.

When UserA sends a message to UserB,

  • UserA encrypts the message with UserB’s PublicKeyB and send the message.
  • This message can only be decrypted using UserB’s PrivateKeyB.

… The same thing happens when the UserB sends a message to UserA.

Watch this video for more understanding about asymmetric cryptography : Youtube video by savjee.

What is CSR(Certificate Signing Request) in iOS ??

CSR is not something that is used only in iOS. It is used in many places.

A CSR or Certificate Signing request is a block of encoded text that is given to a Certificate Authority when applying for a certificate.

Here , we create a CSR and give it to apple which will create the certificate for you. Acesta conține, de asemenea, cheia publică care va fi inclusă în certificat. O cheie privată este de obicei creată în același timp în care creați CSR-ul, realizând o pereche de chei. O autoritate de certificare va folosi un CSR pentru a vă crea certificatul, dar nu are nevoie de cheia dvs. privată. Trebuie să păstrați secretă cheia dvs. privată. Certificatul creat cu un anumit CSR va funcționa numai cu cheia privată care a fost generată împreună cu acesta. Deci, dacă pierdeți cheia privată, certificatul nu va mai funcționa.

(opțional – consultați acest link pentru a înțelege cum funcționează CSR pentru certificatele SSL. Procedura și modul de lucru sunt aproape similare)

Procesul :

  • Crearea unei cereri de semnare a certificatului (CSR) prin intermediul aplicației Keychain Access.
  • Aplicația Keychain va crea un private key(cheia privată va fi stocată în keychain) și un fișier certSigningRequest pe care îl veți încărca apoi la Apple.
  • Apple va verifica cererea și va emite un certificat pentru dumneavoastră. Certificatul va conține public key care poate fi descărcat pe sistemul dumneavoastră. După ce l-ați descărcat, trebuie să îl introduceți în aplicația de acces Keychain Access prin dublu clic pe el. Certificatul va fi împins în Keychain și împerecheat cu cheia privată pentru a forma Code Signing Identity.
  • În cele din urmă, în momentul instalării aplicației, cheia privată utilizată pentru a semna aplicația se potrivește cu cheia publică din certificat. Dacă nu reușește, aplicația nu este instalată.

Asta este tot.

Distracție plăcută!!!

Dacă v-a plăcut să citiți acest articol, vă rog să dați share și să dați câteva clape pentru ca și alții să îl găsească 👏👏👏👏👏 !!!!

Puteți să mă urmăriți pe Medium pentru articole proaspete. De asemenea, conectați-vă cu mine pe LinkedIn și Twitter.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *