XCBLOG
On 31 října, 2021 by adminiOS Code Signing Tutorials
Toto je 1. část seriálu výukových kurzů podepisování kódu iOS. Tato série se zabývá základy procesu podepisování kódu v systému iOS. Provisioning Profiles
*******************************************************
Na zařízeních se systémem iOS lze skutečně spustit pouze aplikace, které byly podepsány důvěryhodnými vývojáři, pokud nemáte zařízení se systémem iOS s jailbreakem. Pokud jste inženýr iOS, určitě jste někdy bojovali s podepisováním kódu. Vzhledem k tomu, že podepisování kódu je pro vývojáře iOS jedním z bolestivých a těžkopádných úkolů, nemohou před činností podepisování kódu utéct. Podepisování kódu a zajišťování profilů je neustálou nepříjemností a bude jí i nadále, dokud vývojáři zcela nepochopí základy podepisování kódu. Toto je úvodní příspěvek vysvětlující proces podepisování kódu s jeho výhodami a omezeními.
O tomto seriálu
Podepisování kódu aplikací pro iOS je jedním z horkých témat pro každého vývojáře iOS. Ačkoli je na internetu k dispozici mnoho zdrojů a také společnost Apple má k procesu podepisování kódu čistou dokumentaci, stále je to záhada. V tomto seriálu se pokusíme pochopit proces podepisování kódu od základů, včetně toho, co je k podepisování kódu potřeba, až po samotný proces podepisování kódu. Prozkoumáme také grafické uživatelské rozhraní i způsoby práce s příkazovým řádkem, kdykoli to bude možné. Začneme od žádostí o podepsání certifikátu pro získání certifikátu pro vývoj systému iOS, poté se budeme zabývat certifikátem a jeho vnitřními částmi. Po pochopení certifikátů se hlouběji ponoříme do profilů provisioningu a nakonec porozumíme procesu podepisování kódu.
Tento seriál je psán mými vlastními slovy nebo jazykem na základě rešerší na webu a v dokumentaci společnosti Apple. Všechny tyto referenční materiály jsem popsal v závěrečném příspěvku. Přiložil jsem také několik snímků obrazovky z portálu Apple Developer a Xcode, aby čtenáři mohli pochopit pojmy. Snažil jsem se skrýt veškerý citlivý obsah, ale pokud je něco omylem odhaleno, prosím, nehackejte mě 🙂
Podepisování kódu
Než se vrhneme na způsob podepisování kódu aplikací pro iOS od společnosti Apple, prozkoumejme, co je podepisování kódu obecně. V reálném životě podepisujeme různé smlouvy, dohody o různých věcech. Proč tyto smlouvy podepisujeme, co pro nás podpis znamená a proč je důležitý? Je to jednoduché, protože podepisování smluv nás právně chrání a máme důvěru, že jakékoli podmínky ve smlouvách nelze změnit, dokud je smlouva v platnosti. Podpis také zajišťuje bezpečnost, že smlouva pochází od důvěryhodných autorit, a ne od podvodníků. Znamená to, že podepisování smluv nám dává jistotu, bezpečí a důvěru.
Podobně podepisování kódu je proces digitálního podepisování jakékoli formy kódu, který potvrzuje, kdo kód napsal, a zaručuje, že kód nebyl při podepisování změněn nebo poškozen. Podepisování kódu používá kryptografický hash k ověření pravosti a integrity softwarového kódu. Ve světě softwaru zajišťuje podepisování kódu identitu autora, integritu kódu, systém sestavení a verzování, aby se uživatelé softwaru při jeho používání cítili bezpečně a jistě. Podepisování kódu používá různé bezpečnostní pojmy, jako je veřejný klíč, soukromý klíč, certifikáty, digitální podpisy atd. Na různých platformách se používají různé přístupy k podepisování kódu, např. v systémech Linux, Windows a MacOS.
Podepisování kódu v systému iOS
Apple má údajně velmi výkonný bezpečnostní mechanismus, až na několik nedávných závad, o kterých jste se mohli dočíst ve zprávách. Pro black-hat hackery je velmi těžké tento mechanismus prolomit. Společnost Apple také používá silný mechanismus podepisování kódu, který zajišťuje zabezpečení, integritu a bezpečnost aplikací pro systém iOS stažených z obchodu Apple App Store. Většinou se zdá, že podepisování kódu v systému iOS je magie, která se odehrává pod kapotou. Pokud funguje, jsou všichni spokojeni, a pokud nefunguje, všichni propadají panice. Většina inženýrů iOS nemá tušení, co se děje pod kapotou, když se aplikace, které napsali, zpívají. V posledních dnech se Apple pokusil učinit podepisování kódu méně bolestivým zavedením funkce automatického podepisování v Xcode, aby činnost podepisování kódu nenarušovala hlavní vývojový tok. Podepisování kódu na platformě Apple se opírá o kryptografii s veřejným klíčem podle standardu X.509. Všem těmto nástrojům a technikám se budeme věnovat později v tomto seriálu.
Proč se učit o podepisování kódu v systému iOS
Když většinu úloh podepisování kódu dnes zvládá Xcode, proč bychom se tedy měli o podepisování kódu zajímat a proč bychom měli investovat svůj čas do jeho poznávání?
Zde jsou uvedeny některé z důvodů, proč se o interním podepisování kódu učit:
- Pryč jsou doby, kdy inženýři iOS nasazovali aplikace iOS z Xcode nainstalovaného na lokálním počítači. Společnosti zavádějí DevOps a CI/CD pro nasazení softwaru ihned po sestavení, takže všechna sestavení musí být automatizovaná bez zásahů člověka nebo grafického rozhraní.
- Tisíce hodin vývojářů jsou promarněny kvůli tomu, že podepisování kódu v Xcode selhalo a vývojář se snaží problémy s podepisováním kódu vyřešit regenerací a opravou certifikátů a poskytováním profilů.
- Nástroje třetích stran, jako je Fastlane, vývojářům iOS značně usnadnily skriptování sestavení. Když však společnost Apple provedla změny v základních technologiích, Fastlane se neustále rozbíjí a vývojáři tráví hodiny, dny a týdny opravováním rozbitých skriptů pro nasazení. V některých případech musí inženýři čekat, až budou nové změny implementovány do Fastlane.
- Jestliže jste vývojář/inženýr iOS a chcete být celý život inženýrem iOS, pak se o těchto věcech nemusíte učit. Pokud však chcete ve své kariéře růst, pak musíte podrobně znát základní nástroje, technologie a celý ekosystém iOS. Pokud se v těchto základních technologiích nevyznáte, nedostanete se na pozici iOS Tech Lead nebo iOS Tech Architect nebo na podobné pozice bez ohledu na to, jak dobré máte dovednosti v oblasti vývoje iOS. Jako technický architekt byste měli být schopni vyřešit podepisování kódu nebo podobné problémy související s infrastrukturou rychle a bez závislosti na Xcode nebo jiných nástrojích třetích stran.
Snad to stačí k přesvědčení o důležitosti podepisování kódu. Je jen na vás, zda se ho naučíte, nebo ho necháte být.
Předpoklad
Ponořme se do světa podepisování kódu v systému iOS. Probereme vše od začátku, pokud jde o to, co je potřeba a co to dělá pod kapotou. Abychom mohli začít, potřebujeme následující věci, které, jak věřím, už všichni máte, pokud čtete tento příspěvek.
- macOS
- Apple Developer Membership
- Xcode 9+
Jakmile tohle všechno máte, můžete se pustit do podepisování kódu iOS.
Přínosy podepisování kódu
Apple chce, abychom prošli složitým procesem podepisování kódu, protože to má pro skutečné uživatele určité výhody. Uživatelé aplikací pro systém iOS se při stahování aplikací z obchodu s aplikacemi Apple cítí bezpečně. Podepisování kódu zajišťuje, že
- Tento kód napsal legitimní vývojář a má identitu podepisujícího nebo autora aplikací.
- Podepisování kódu zajišťuje, že kód nebyl od doby, kdy ho napsal autor, někým pozměněn. Zaručuje, že kód vytvořený autorem je původní a že do něj nebylo nic vneseno od doby, kdy byl podepsán autorem.
- Uživatelé mohou stahovat aplikace od vývojářů, kterým důvěřují, aniž by se museli příliš obávat o bezpečnost.
Podepisování kódu slouží k zajištění bezpečnosti uživatelů systému iOS, aby se cítili bezpečně při používání aplikací, které si stáhli z obchodu s aplikacemi.
Omezení podepisování kódu
Přestože podepisování kódu slouží k zajištění bezpečnosti uživatelů, existují některé aspekty, které ne vždy řeší bezpečnostní problémy.
- Podepisování kódu zajišťuje, že kód pochází od legitimního vývojáře, který je členem programu Apple Developer, ale nezaručuje, že kód sám o sobě neobsahuje bezpečnostní chyby.
- Podepisování kódu nezaručuje, že zásuvné moduly aplikací, které se dynamicky načítají během provádění aplikací, jsou bezpečné.
- Pro podepsaný kód neexistuje žádná technologie správy digitálních práv nebo ochrany proti kopírování.
Teď jsme se zabývali důležitostí informací o podepisování kódu a výhodami a omezeními. V příštím příspěvku si projdeme důležitý koncept, kde začíná proces podepisování kódu, tj. žádosti o podepsání certifikátu.
Pokračujte ve čtení části 2-: Žádosti o podepsání certifikátu
Napsat komentář