Co je to profil provisioningu a podepisování kódu v systému iOS?

Zdroj:

Definice společnosti Apple:

Profil provisioning je soubor digitálních entit, které jednoznačně spojují vývojáře a zařízení s autorizovaným vývojovým týmem iPhonu a umožňují zařízení používat k testování.

Na rozdíl od Androidu nelze do zařízení se systémem iOS nainstalovat libovolnou aplikaci. Nejprve ji musí podepsat společnost Apple. Když však vyvíjíte aplikaci, pravděpodobně ji chcete otestovat, než ji odešlete společnosti Apple ke schválení. Provisioning profil funguje jako spojení mezi zařízením a vývojářským účtem. Během vývoje vybíráte, na kterých zařízeních může vaše aplikace běžet a ke kterým službám aplikace může přistupovat. Profil provisioning je stažen z vašeho vývojářského účtu a vložen do balíčku aplikací a celý balíček je podepsán kódem. Profil Development Provisioning Profile musí být nainstalován na každém zařízení, na kterém chcete spustit kód své aplikace. Pokud informace v profilu provisioning neodpovídají určitým kritériím, aplikace se nespustí.

Každý profil Development Provisioning Profile bude obsahovat:

  • Vývojové certifikáty – vývojový certifikát. Jsou určeny pro vývojáře, kteří chtějí aplikaci testovat na fyzickém zařízení při psaní kódu.
  • Unikátní identifikátory zařízení (seznam zařízení, na kterých může aplikace běžet)
  • ID aplikace (může obsahovat zástupný znak *, který se použije pro mnoho aplikací s podobnými identifikátory svazku). – ID aplikace je dvoudílný řetězec, který slouží k identifikaci jedné nebo více aplikací od jednoho vývojového týmu.

Zařízení uvedená v rámci profilu provisioningu mohou k testování používat pouze ty osoby, jejichž certifikáty pro vývoj iPhonu jsou v profilu zahrnuty. 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, z výše uvedeného obrázku je vidět, že je zkontrolováno AppID, certifikát je ověřen, Tým je porovnán, schopnosti a oprávnění jsou porovnány .

Pokud jsou všechny výše uvedené kroky úspěšné, je podepsaná binárka odeslána do zařízení a je ověřena proti stejnému profilu provisioningu v aplikaci a nakonec spuštěna. Pokud některá z těchto podmínek selže, aplikace se nenainstaluje – a zobrazí se šedá ikona aplikace.

Rozdíl mezi vývojovými a distribučními profily je ten, že distribuční profily nezadávají žádná ID zařízení. Pokud chcete vydat aplikaci, která má být omezena na určitý počet registrovaných zařízení, musíte k tomu použít profil Ad-Hoc.

Distribuční profily slouží k odeslání aplikace do obchodu App Store k distribuci. Poté, co aplikaci zkontroluje společnost Apple, podepíše ji vlastním podpisem, který může běžet na libovolném zařízení.

To je všechno hezké, ale co je to podepisování kódu?

Podepsání aplikace umožňuje systému iOS zjistit, kdo aplikaci podepsal, a ověřit, že aplikace nebyla od doby podepsání změněna. Podpisovou identitu tvoří dvojice veřejného a soukromého klíče, kterou pro vás vytvoří společnost Apple.

Asymetrická kryptografie

Asymetrická kryptografie používá veřejný a soukromý klíč. Soukromý klíč si uživatelé musí nechat pro sebe, ale veřejný klíč mohou sdílet. A pomocí těchto veřejných a soukromých klíčů může uživatel dokázat, že je skutečně sám sebou.

Jak funguje asymetrická kryptografie

Předpokládejme, že existuje uživatelA a uživatelB .

  • UživatelA vytvoří soukromý klíčA + veřejný klíčA.
  • UživatelB vytvoří PrivateKeyB + PublicKeyB.

Pro zabezpečení komunikace mezi UserA a UserB,

  • UserA sdílí svůj PublicKeyA s UserB .
  • 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. Obsahuje také veřejný klíč, který bude součástí certifikátu. Soukromý klíč se obvykle vytváří současně s vytvořením CSR, čímž se vytvoří dvojice klíčů. Certifikační autorita použije CSR k vytvoření vašeho certifikátu, ale nepotřebuje váš soukromý klíč. Svůj soukromý klíč musíte udržovat v tajnosti. Certifikát vytvořený pomocí konkrétního CSR bude fungovat pouze s privátním klíčem, který s ním byl vygenerován. Pokud tedy soukromý klíč ztratíte, certifikát již nebude fungovat.

(nepovinné – pro pochopení fungování CSR pro certifikáty SSL odkazujeme na tento odkaz. Postup a fungování je téměř podobné)

Postup :

  • Vytvořte žádost o podepsání certifikátu (CSR) prostřednictvím aplikace pro přístup do klíčenky.
  • Aplikace pro přístup ke klíčové sadě vytvoří private key(soukromý klíč bude uložen v klíčové sadě) a certSigningRequest soubor, který poté odešlete společnosti Apple.
  • Apple ověří žádost a vystaví vám certifikát. Certifikát bude obsahovat public key, který si můžete stáhnout do svého systému. Po jeho stažení jej musíte vložit do aplikace pro přístup do klíčenky dvojitým kliknutím. Certifikát bude vložen do klíčenky a spárován se soukromým klíčem, čímž vznikne identita pro podepisování kódů.
  • Nakonec se při instalaci aplikace soukromý klíč použitý k podpisu aplikace shoduje s veřejným klíčem v certifikátu. Pokud se to nepodaří, aplikace se nenainstaluje.

To je vše. !

Užijte si to!!!

Pokud se vám čtení tohoto příspěvku líbilo, sdílejte ho a dejte mu pár potlesků, aby ho mohli najít i ostatní 👏👏👏👏👏 !!!!

Pro čerstvé články mě můžete sledovat na Médiu. Spojte se se mnou také na LinkedIn a Twitteru.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *