Podepisování a zajišťování kódu v iOS v kostce

Vyvíjím aplikace již více než 3 roky a stále mě štve jedna věc – podepisování a zajišťování kódu v iOS. Co jsou to podepisovací identity? Proč musím jako vývojář vytvářet Provisioning Profiles a starat se o takové věci? Pokud na tyto otázky nemáte žádné dobré odpovědi a opravdu se vám nechce pročítat Apple Docs, tohle je snad článek, který vám celý proces odhalí a mně poslouží jako reference v méně než 5 minutách.

Jsem si jistý, že mnoho z vás se dokáže rychle naučit věci pouhým přečtením textu, ale co mám opravdu rád, je nechat si věci vysvětlit vizuálně pomocí rámečků a šipek. Takže největším problémem pro mě je, že neexistuje žádná tabulka nebo grafika, která by chronologicky vybrala všechny důležité části a ukázala, jak vše dohromady funguje srozumitelným způsobem. To je důvod, proč se na konci tohoto příspěvku pokusím nějaký vytvořit. Začněme.

Nejprve si shromáždíme hlavní pojmy, na které narazíte, když se budete snažit najít na internetu nějaké věci související s Provisioningem a podepisováním kódů.

  • Xcode
  • Centrum členů
  • Klíčová sada
  • Podepisovací identita
  • Soukromý & Veřejný klíč
  • Provisioningový profil
  • App. ID

Xcode & Členské centrum

Jestliže jste vývojář iOS, obvykle používáte Xcode k vytváření a správě svých aplikací a zdrojů a jejich nahrávání do Appstore. To je vše, co potřebujete vědět o Xcode, abyste mohli sledovat tento příspěvek. pokud si o něm chcete přečíst více, klikněte sem: Xcode

Po registraci do programu Apple Developer Program se budete moci přihlásit do členského centra. To je místo, kde můžete vytvářet profily pro provisioning, ID aplikací, certifikáty atd. Části členského centra jsou přímo propojeny s Xcode. V nastavení Xcode si například můžete prohlédnout a vytvořit své podpisové identity nebo stáhnout a obnovit profily Provisioning.

Podepisová identita, veřejný & soukromý klíč, klíčová sada aplikací

Jednu věc si musíme vyjasnit, a to pojem podepisování. Podepsání aplikace umožňuje systému iOS zjistit, kdo aplikaci podepsal, a ověřit, že aplikace nebyla od doby, kdy jste ji podepsali, změněna. Podpisová identita se skládá z páru veřejného a soukromého klíče, který pro vás vytvoří společnost Apple. Představte si veřejný klíč jako mechanismus pouze pro uzamčení, takže k opětovnému rozbalení, odemčení nebo dekódování dat potřebujete znát soukromý klíč.

Kde se bere dvojice veřejného a soukromého klíče a jak požádáte o certifikát, který je obsahuje? Všechna tato kouzla se odehrávají při vytváření žádosti o podepsání certifikátu (CSR) prostřednictvím aplikace pro přístup do klíčenky. Pokud tak učiníte, aplikace Keychain vytvoří soukromý klíč a soubor certSigningRequest, který pak odešlete společnosti Apple. Společnost Apple žádost ověří a vystaví vám certifikát. Certifikát bude obsahovat veřejný klíč, který si můžete stáhnout do svého systému. Po jeho stažení jej musíte vložit do aplikace Keychain Access poklepáním na něj. Kryptografické funkce ho používají k vygenerování jedinečného podpisu pro vaši aplikaci, což je v podstatě vaše Code Signing Identity.

Certifikát bude k dispozici také prostřednictvím členského centra, ale bude obsahovat pouze veřejný klíč, takže si soukromý klíč uschovejte.

Ve vašem svazku klíčů musí být také zprostředkující certifikát, který zajistí, že váš vývojářský nebo distribuční certifikát vydá jiná certifikační autorita. Vím, že to zní trochu zmateně, ale takhle to funguje. Instaluje se automaticky při prvním nastavení Xcode, takže se o něj v podstatě nemusíte tolik starat, protože je nakonfigurován automaticky.

Provisioning Profile & App ID

Jak víme, Apple si potrpí na bezpečnost, takže není možné nainstalovat aplikaci do jakéhokoli zařízení se systémem iOS tam pouze pomocí certifikátu. Zde přicházejí na řadu Provisioning Profiles. Profil Provisioning Profile musí být nainstalován na každém zařízení, na kterém má kód vaší aplikace běžet. Každý vývojový profil Provisioning Profile bude obsahovat sadu vývojových certifikátů iPhone, jedinečné identifikátory zařízení a ID aplikace. App ID je dvoudílný řetězec sloužící k identifikaci jedné nebo více aplikací od jednoho vývojového týmu.

Zařízení uvedená v profilu Development Provisioning Profile mohou k testování používat pouze ty osoby, jejichž vývojové certifikáty jsou v profilu obsaženy. Jedno zařízení může obsahovat více profilů provisioningu. Rozdíl mezi vývojovými a distribučními profily spočívá v tom, že distribuční profily nespecifikují žá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.

Chart

Tady je graf, který jsem vymyslel. Pokud objevíte nějaké věci, které jsem přehlédl nebo špatně vysvětlil, dejte mi prosím vědět. Jak už bylo řečeno, je to poprvé, co jsem se opravdu snažil zorientovat ve vnitřnostech Provisioningu a Code Signing. Vím, že je toho ještě hodně, o čem by se dalo mluvit, ale myslím, že je to dobrý začátek pro vše kolem tohoto tématu. Budu se snažit tento příspěvek co nejrychleji aktualizovat a opravovat vše špatné.

  1. Nainstaluje se Xcode a do Keychainu se strčí Intermediate Certificate
  2. Vytvoří se Certificate Signing Request (CSR).
  3. Soukromý klíč bude vygenerován spolu s vytvořením CSR a uložen do klíčenky
  4. CSR bude nahrán do členského centra
  5. Apple vše ověří a vydá certifikát
  6. Certifikát bude stažen do počítače
  7. Certifikát bude posunut do klíčenky a spárován se soukromým klíčem, čímž vznikne Code Signing Identity
  8. Provisioning Profile bude vytvořen pomocí certifikátu, ID aplikace a identifikátorů zařízení a stáhne jej Xcode
  9. Xcode podepíše aplikaci a odešle Provisioning Profiles do zařízení
  10. iOS potvrdí, zda je vše správně nakonfigurováno.To znamená, že Provisioning Profile by měl obsahovat certifikát, který jste použili k podpisu aplikace, UDID vašeho zařízení a správné ID aplikace.
  11. Vaše aplikace by nyní měla být spuštěna!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.