Źródło: Stackoverflow i internet 🤓.
Definicja Apple: Profil provisioningowy to zbiór bytów cyfrowych, które jednoznacznie wiążą deweloperów i urządzenia z autoryzowanym zespołem iPhone Development Team i umożliwiają wykorzystanie urządzenia do testów.
W przeciwieństwie do Androida, na urządzeniu z iOS nie można zainstalować dowolnej aplikacji. Musi ona najpierw zostać podpisana przez Apple. Jednak, gdy tworzysz aplikację, prawdopodobnie chcesz ją przetestować przed wysłaniem jej do Apple w celu zatwierdzenia. Profil Provisioning działa jako łącznik między urządzeniem a kontem deweloperskim. Podczas tworzenia aplikacji wybierasz, na których urządzeniach może działać Twoja aplikacja i do jakich usług aplikacji może mieć dostęp. Profil udostępniania jest pobierany z konta programisty i osadzany w pakiecie aplikacji, a cały pakiet jest podpisywany kodem. Na każdym urządzeniu, na którym ma być uruchamiany kod aplikacji, musi być zainstalowany profil udostępniania deweloperskiego. Jeśli informacje w profilu udostępniania nie spełniają określonych kryteriów, aplikacja nie zostanie uruchomiona.
Każdy profil Development Provisioning Profile będzie zawierał:
- Development Certificates – certyfikat rozwojowy. Są one przeznaczone dla deweloperów, którzy chcą przetestować aplikację na fizycznym urządzeniu podczas pisania kodu.
- Unique Device Identifiers (Lista urządzeń, na których aplikacja może działać)
- App ID (może zawierać * wild card, aby być używane dla wielu aplikacji z podobnymi identyfikatorami pakietów). – App ID to dwuczęściowy ciąg znaków używany do identyfikacji jednej lub więcej aplikacji z jednego zespołu programistów.
Urządzenia określone w profilu zaopatrzenia mogą być używane do testowania tylko przez te osoby, których certyfikaty programisty iPhone’a są zawarte w profilu. A single device can contain multiple provisioning profiles.
- So, What is happening when we connect the device to xcode and installs the app??
- To wszystko jest w porządku, ale co to jest podpisywanie kodu?
- Kryptografia asymetryczna
- Jak działa kryptografia asymetryczna??
- What is CSR(Certificate Signing Request) in iOS ??
- Proces :
- Jeśli podobało Ci się czytanie tego posta, proszę podziel się i daj kilka klapsów, aby inni mogli go znaleźć 👏👏👏👏👏 !!!!
So, What is happening when we connect the device to xcode and installs the app??
When you install the application on a device the following things happens:
- the provisioning profile in the Mac goes to the developer certificate in your key chain.
- xcode uses the certificate to sign the code.
- device’s UUID is matched with the IDs in the provisioning profile.
- AppID in the provisioning profile is matched with the bundle identifier in the app.
- The entitlements required are associated with the App ID.
- The private key used to sign the app matches the public key in the certificate.
Here is a screenshot from xcode signing section:
SO, z powyższego obrazka widać, że AppID jest sprawdzany, certyfikat jest walidowany, zespół jest dopasowywany, możliwości i uprawnienia są dopasowywane.
Jeśli wszystkie powyższe kroki są udane, podpisany plik binarny jest wysyłany do urządzenia i jest sprawdzany pod kątem tego samego profilu w aplikacji, a następnie uruchamiany. Jeśli którykolwiek z tych warunków nie powiedzie się, aplikacja nie zainstaluje się – i zobaczysz wyszarzoną ikonę aplikacji.
Różnica między profilami deweloperskimi a dystrybucyjnymi jest taka, ż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.
Profile Dystrybucyjne są używane do wysyłania aplikacji do App Store w celu dystrybucji. Po przejrzeniu aplikacji przez apple podpisuje się ją własnym podpisem, który można uruchomić na dowolnym urządzeniu.
To wszystko jest w porządku, ale co to jest podpisywanie kodu?
Podpisywanie aplikacji pozwala iOS zidentyfikować, kto podpisał aplikację i zweryfikować, że aplikacja nie została zmodyfikowana od czasu podpisania. Tożsamość podpisującego składa się z pary klucz publiczny-prywatny, którą Apple tworzy dla Ciebie.
Kryptografia asymetryczna
Kryptografia asymetryczna wykorzystuje klucz publiczny i klucz prywatny. Użytkownicy muszą zachować swój klucz prywatny dla siebie, ale mogą dzielić się kluczem publicznym. Używając klucza publicznego i prywatnego, użytkownik może udowodnić, że jest sobą.
Jak działa kryptografia asymetryczna??
Załóżmy, że istnieje UżytkownikA i UżytkownikB .
- UżytkownikA tworzy klucz prywatnyA + klucz publicznyA.
- UżytkownikB tworzy PrivateKeyB + PublicKeyB.
Aby zabezpieczyć komunikację między UserA i UserB,
- UżytkownikA dzieli się swoim PublicKeyA z UserB .
- UserB shares his PublicKeyB with UserA.
… and both users keep the private key with themselves.
When UserA sends a message to UserB,
- UserA encrypts the message with UserB’s PublicKeyB and send the message.
- This message can only be decrypted using UserB’s PrivateKeyB.
… The same thing happens when the UserB sends a message to UserA.
Watch this video for more understanding about asymmetric cryptography : Youtube video by savjee.
What is CSR(Certificate Signing Request) in iOS ??
CSR is not something that is used only in iOS. It is used in many places.
A CSR or Certificate Signing request is a block of encoded text that is given to a Certificate Authority when applying for a certificate.
Here , we create a CSR and give it to apple which will create the certificate for you. Zawiera on również klucz publiczny, który będzie zawarty w certyfikacie. Klucz prywatny jest zazwyczaj tworzony w tym samym czasie, w którym tworzymy CSR, tworząc parę kluczy. Urząd certyfikacji użyje CSR do utworzenia Twojego certyfikatu, ale nie będzie potrzebował Twojego klucza prywatnego. Musisz zachować swój klucz prywatny w tajemnicy. Certyfikat utworzony za pomocą danego CSR będzie działał tylko z kluczem prywatnym, który został wygenerowany za jego pomocą. Jeśli więc stracisz klucz prywatny, certyfikat nie będzie działał.
(opcjonalnie – zapoznaj się z tym linkiem, aby zrozumieć, jak działa CSR dla certyfikatów SSL. Procedura i działanie jest prawie podobne)
Proces :
- Utwórz Certificate Signing Request (CSR) poprzez aplikację Keychain Access.
- Aplikacja Keychain utworzy
private key
(klucz prywatny będzie przechowywany w keychain) icertSigningRequest
plik, który następnie prześlesz do Apple. - Apple potwierdzi żądanie i wyda certyfikat dla Ciebie. Certyfikat będzie zawierał plik
public key
, który można pobrać do systemu. Po pobraniu certyfikatu należy umieścić go w aplikacji Keychain Access klikając na niego dwukrotnie. Certyfikat zostanie umieszczony w Keychain i sparowany z kluczem prywatnym, aby utworzyć Code Signing Identity. - Wreszcie, w czasie instalacji aplikacji, klucz prywatny użyty do podpisania aplikacji jest zgodny z kluczem publicznym w certyfikacie. Jeśli to się nie uda, aplikacja nie zostanie zainstalowana.
To wszystko. Ciesz się!!!
Jeśli podobało Ci się czytanie tego posta, proszę podziel się i daj kilka klapsów, aby inni mogli go znaleźć 👏👏👏👏👏 !!!!
Możesz śledzić mnie na Medium po świeże artykuły. Połącz się ze mną również na LinkedIn i Twitterze.