Sobes.tech
Middle+

Jak funguje systém certifikátů v iOS?

sobes.tech AI

Odpověď od AI

Certifikáty se používají pro kryptografický podpis a ověřování aplikací, profilů přípravy a připojení. Klíčové komponenty: Kořenový certifikát Apple, Meziprovolné certifikáty, Certifikáty vývojáře, Certifikáty distribuce a Provisioning profily.

Kořenový certifikát Apple je důvěryhodný kořenový certifikát Apple.

Meziprovolné certifikáty spojují kořenový certifikát s koncovými certifikáty vývojáře/distributora.

Certifikát vývojáře identifikuje vývojáře pro účely vývoje a ladění na registrovaných zařízeních.

Certifikát distribuce se používá k podepisování aplikací před jejich distribucí přes App Store, Firemní programy nebo Ad Hoc.

Provisioning profil spojuje ID aplikace, certifikáty vývojáře/distributora a registrovaná zařízení (pro Ad Hoc a vývoj). Určuje, jaké služby Apple může aplikace používat (například Push Notifications, Capabilities).

Proces:

  1. Na počítači vývojáře se vytvoří žádost o podpis certifikátu (CSR).
  2. CSR se nahrává na portál Apple Developer.
  3. Apple vydá certifikát vývojáře nebo distribuce.
  4. Certifikát se nainstaluje do úložiště klíčů (Keychain) na počítači vývojáře.
  5. Na portálu Apple Developer se vytvoří provisioning profil, který spojuje ID aplikace, certifikát a zařízení. Profil se také nahrává a instaluje.
  6. Aplikace se podepisuje pomocí certifikátu a provisioning profilu během sestavení.
  7. Při instalaci na zařízení nebo před publikací v App Store je podpis a provisioning profil ověřován systémem iOS.

Ověření: Systém iOS ověřuje řetězec důvěry certifikátu, který začíná certifikátem aplikace a končí u kořenového certifikátu Apple, a platnost provisioning profilu. Pokud je něco nesprávně, instalace nebo spuštění aplikace je zablokováno.

Provisioning profil
  .mobileprovision // soubor
  obsahuje:
    - ID aplikace
    - Certifikáty (Vývojář/Distribuce)
    - UDID zařízení (pro Dev/Ad Hoc)
    - Entitlements (možnosti)

Certifikát
  .cer // soubor
  podepsaný Apple
  spojen s privátním klíčem v Keychain