iOS Code Signing & Provisioning in a Nutshell

Rozwijam aplikacje od ponad 3 lat i 1 rzecz, która wciąż mnie denerwuje to Code Signing i Provisioning w iOS. Czym są tożsamości podpisujące? Dlaczego muszę tworzyć profile Provisioning Profiles i dbać o takie rzeczy jako deweloper? Jeśli nie masz żadnych dobrych odpowiedzi na te pytania i naprawdę nie chcesz czytać przez Apple Docs, to mam nadzieję, że jest to artykuł, który odsłania cały proces dla Ciebie i dla mnie jako odniesienie w mniej niż 5 minut.

Jestem pewien, że wielu z was może nauczyć się rzeczy szybko po prostu czytając przez tekst, ale to, co naprawdę lubię, to dostać rzeczy wyjaśnione w sposób wizualny z pudełkami i strzałkami. Więc największym problemem dla mnie jest to, że nie ma wykresu lub grafiki, która zbierałaby wszystkie istotne części i pokazywała jak wszystko działa razem w łatwy do zrozumienia sposób. To jest powód, dla którego postaram się go stworzyć na końcu tego wpisu. Zacznijmy.

Po pierwsze, zbierzmy główne terminy, na które można się natknąć próbując znaleźć jakiekolwiek rzeczy związane z Provisioningiem i Code Signing w Internecie.

  • Xcode
  • Member Center
  • Keychain
  • Signing Identity
  • Private & Public Key
  • Provisioning Profile
  • App ID

Xcode & Member Center

Jeśli jesteś programistą iOS, zazwyczaj używasz Xcode do tworzenia i zarządzania aplikacjami i zasobami oraz przesyłania ich do Appstore. To wszystko, co musisz wiedzieć o Xcode, aby podążać za tym Post. jeśli chcesz przeczytać więcej na ten temat kliknij tutaj: Xcode

Po zarejestrowaniu się w Apple Developer Program będziesz mógł się zalogować do Centrum Członkowskiego. Jest to miejsce, w którym możesz tworzyć profile Provisioning Profiles, App IDs, certyfikaty itp. Części Centrum Członkowskiego są bezpośrednio połączone z Xcode. Na przykład możesz zobaczyć i utworzyć swoje Signing Identities lub pobrać i odświeżyć Provisioning Profiles w ustawieniach Xcode.

Signing Identity, Public & Private Key, Keychain Application

Jedną z rzeczy, które musimy wyjaśnić, jest termin Signing. Podpisywanie aplikacji pozwala iOS zidentyfikować, kto podpisał aplikację i sprawdzić, czy aplikacja nie została zmodyfikowana od czasu podpisania. Tożsamość podpisywania składa się z pary klucz publiczny-prywatny, który Apple tworzy dla Ciebie. Pomyśl o kluczu publicznym jako mechanizmie lock-only, więc musisz znać klucz prywatny, aby ponownie rozpakować, odblokować lub odszyfrować dane.

Skąd pochodzi para kluczy publicznych i prywatnych i jak zażądać certyfikatu zawierającego je? Cała ta magia dzieje się, gdy utworzysz żądanie podpisania certyfikatu (CSR) za pomocą aplikacji Keychain Access. Jeśli to zrobisz, aplikacja Keychain utworzy klucz prywatny i plik certSigningRequest, który następnie prześlesz do Apple. Apple potwierdzi żądanie i wystawi dla Ciebie certyfikat. Certyfikat będzie zawierał klucz publiczny, który możesz pobrać do swojego systemu. Po pobraniu musisz umieścić go w aplikacji Keychain Access, klikając go dwukrotnie. Jest on używany przez funkcje kryptograficzne do generowania unikalnego podpisu dla Twojej aplikacji, który jest w zasadzie Twoim Code Signing Identity.

Certyfikat będzie również dostępny przez Member Center, ale będzie zawierał tylko klucz publiczny, więc trzymaj ten klucz prywatny bezpiecznie.

Certyfikat pośredni jest również wymagany, aby być w keychainie, aby zapewnić, że Twój certyfikat dewelopera lub dystrybucji jest wydany przez inny organ certyfikacji. Wiem, że brzmi to trochę zagmatwanie, ale tak to działa. Jest on instalowany automatycznie podczas konfigurowania Xcode po raz pierwszy, więc w zasadzie nie musisz się nim przejmować, ponieważ jest konfigurowany automatycznie.

Provisioning Profile & App ID

Jak wiemy, Apple lubi utrzymywać rzeczy bezpieczne, więc nie jest możliwe zainstalowanie aplikacji na każdym urządzeniu iOS przy użyciu tylko certyfikatu. To jest, gdzie Profile Provisioning przychodzi w. Provisioning Profile musi być zainstalowany na każdym urządzeniu, na którym ma być uruchomiony kod aplikacji. Każdy Development Provisioning Profile będzie zawierał zestaw certyfikatów iPhone Development, unikalne identyfikatory urządzeń oraz App ID. App ID to dwuczęściowy ciąg znaków służący do identyfikacji jednej lub więcej aplikacji z jednego zespołu programistów.

Urządzenia określone w profilu Development Provisioning Profile mogą być używane do testowania tylko przez osoby, których Certyfikaty Rozwoju są zawarte w profilu. Jedno urządzenie może zawierać wiele profili provisioningowych. Różnica między profilami rozwojowymi a dystrybucyjnymi polega na tym, że profile dystrybucyjne nie określają żadnych identyfikatorów urządzeń. Jeśli chcesz wydać aplikację, która powinna być ograniczona do pewnej liczby zarejestrowanych urządzeń, musisz użyć do tego profilu Ad-Hoc.

Chart

Tutaj jest wykres, który wymyśliłem. Jeśli odkryjesz jakieś rzeczy, które przeoczyłem lub wyjaśniłem w niewłaściwy sposób, proszę daj mi znać. Jak zostało powiedziane, jest to pierwszy raz, kiedy naprawdę próbowałem owinąć moją głowę wokół wnętrzności Provisioning i Code Signing. Wiem, że jest dużo więcej do omówienia, ale myślę, że to dobry początek dla wszystkiego wokół tego tematu. Postaram się na bieżąco aktualizować ten post i naprawiać wszystko co złe tak szybko jak tylko mogę.

  1. Xcode zostanie zainstalowany, a certyfikat pośredni zostanie wepchnięty do Keychain
  2. Żądanie podpisania certyfikatu (CSR) zostanie utworzone.
  3. Klucz prywatny zostanie wygenerowany wraz z CSR i zapisany w Keychain
  4. CSR zostanie przesłany do Member Center
  5. Apple sprawdzi wszystko i wyda Certyfikat
  6. Certyfikat zostanie pobrany na Twój komputer
  7. Certyfikat zostanie wepchnięty do Keychain i sparowany z kluczem prywatnym, aby utworzyć Code Signing Identity
  8. Profil Provisioning Profile zostanie utworzony przy użyciu Certyfikatu, App ID i Device Identifiers i pobrane przez Xcode
  9. Xcode podpisze aplikację i popchnie Provisioning Profile na urządzenie
  10. iOS sprawdzi, czy wszystko jest poprawnie skonfigurowane.Oznacza to, że Provisioning Profile powinien zawierać certyfikat, którego użyłeś do podpisania aplikacji, identyfikator UDID urządzenia i prawidłowy identyfikator aplikacji.
  11. Twoja aplikacja powinna być teraz uruchomiona!

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.