Jak działa system certyfikatów w iOS?
sobes.tech AI
Odpowiedź od AI
Certyfikaty są używane do podpisu kryptograficznego i weryfikacji aplikacji, profili przygotowawczych i połączeń. Kluczowe komponenty: Certyfikat główny Apple, Certyfikaty pośrednie, Certyfikaty deweloperskie, Certyfikaty dystrybucyjne i Profile provisioning.
Certyfikat główny Apple jest zaufanym centrum certyfikacji Apple.
Certyfikaty pośrednie łączą certyfikat główny z końcowymi certyfikatami dewelopera/dystrybutora.
Certyfikat deweloperski identyfikuje dewelopera do celów rozwoju i debugowania na zarejestrowanych urządzeniach.
Certyfikat dystrybucyjny służy do podpisywania aplikacji przed ich rozpowszechnianiem przez App Store, Programy Enterprise lub Ad Hoc.
Profil provisioning łączy ID aplikacji, certyfikaty deweloperskie/dystrybucyjne i zarejestrowane urządzenia (dla Ad Hoc i rozwoju). Określa, z jakich usług Apple może korzystać aplikacja (np. Powiadomienia Push, Funkcje).
Proces:
- Tworzy się żądanie podpisu certyfikatu (CSR) na komputerze dewelopera.
- CSR jest przesyłane na portal Apple Developer.
- Apple wydaje certyfikat dewelopera lub dystrybucji.
- Certyfikat jest instalowany w magazynie kluczy (Keychain) na komputerze dewelopera.
- Tworzy się Profil provisioning na portalu Apple Developer, łączący ID aplikacji, certyfikat i urządzenia. Profil jest również przesyłany i instalowany.
- Aplikacja jest podpisywana przy użyciu certyfikatu i Profilu provisioning podczas kompilacji.
- Podczas instalacji na urządzeniu lub przed publikacją w App Store, podpis i Profil provisioning są weryfikowane przez system iOS.
Weryfikacja: System iOS sprawdza łańcuch zaufania certyfikatu, od certyfikatu aplikacji do Certyfikatu głównego Apple, oraz ważność Profilu provisioning. Jeśli coś jest nieprawidłowe, instalacja lub uruchomienie aplikacji jest blokowane.
Profil provisioning
.mobileprovision // plik
zawiera:
- ID aplikacji
- Certyfikaty (Deweloper/Dystrybucja)
- UDID urządzeń (dla Dev/Ad Hoc)
- Uprawnienia (Capabilities)
Certyfikat
.cer // plik
podpisany przez Apple
powiązany z kluczem prywatnym w Keychain