XCBLOG
On 31 października, 2021 by adminTutoriale podpisywania kodu iOS
To jest część 1 serii samouczków podpisywania kodu iOS. Ta seria obejmuje podstawy procesu podpisywania kodu w systemie iOS. Możesz znaleźć wszystkie posty z tej serii powiązane poniżej
- iOS Code Signing: 1. Getting Started
- iOS Code Signing: 2. Certificate Signing Requests
- iOS Code Signing: 3. Certificates
- iOS Code Signing: 4. Provisioning Profiles
- iOS Code Signing: 5. Podpisywanie aplikacji iOS
*******************************************************
Prawdę mówiąc, urządzenia iOS uruchamiają tylko aplikacje, które zostały podpisane przez zaufanych deweloperów, chyba że masz jailbroken urządzeń iOS. Jeśli jesteś inżynierem iOS, musiałeś walczyć z podpisywaniem kodu w pewnym momencie. Ponieważ podpisywanie kodu jest jednym z bolesnych i uciążliwych zadań dla programistów iOS, ale nie mogą oni uciec od działań związanych z podpisywaniem kodu. Podpisywanie kodu i profile provisioning były ciągłym utrapieniem i będą nim nadal, dopóki programiści nie zrozumieją podstaw podpisywania kodu. Jest to post wprowadzający wyjaśniający proces podpisywania kodu z jego korzyściami i ograniczeniami.
About this Series
Podpisywanie kodu aplikacji iOS jest jednym z gorących tematów dla każdego programisty iOS. Chociaż istnieje wiele zasobów dostępnych online, jak również Apple ma czystą dokumentację na temat procesu podpisywania kodu, to nadal jest tajemnicą. W tej serii postaramy się zrozumieć proces podpisywania kodu od podstaw, włączając w to to, co jest potrzebne do podpisywania kodu, aż po sam proces podpisywania kodu. Zbadamy również GUI, jak i sposoby działania z linii poleceń, jeśli tylko będzie to możliwe. Zaczniemy od Certificate Signing Requests, aby uzyskać certyfikat iOS Development, następnie zajmiemy się certyfikatem i jego wewnętrznymi częściami. Po zrozumieniu certyfikatów, zrobimy głębokie nurkowanie w profilach provisioning i w końcu zrozumiemy proces podpisywania kodu.
Te serie są napisane moimi własnymi słowami lub językiem, robiąc pewne badania w sieci i dokumentacji Apple. Mam pokryte wszystkie te materiały referencyjne w końcowym poście. Mam również dołączone kilka zrzutów ekranu z portalu Apple Developer i Xcode, aby czytelnicy mogli zrozumieć koncepcje. Starałem się ukryć wszystkie wrażliwe treści, ale jeśli jest coś narażone przez pomyłkę, proszę nie hakuj mnie 🙂
Code Signing
Zanim wskoczymy do sposobu Apple podpisywania kodu aplikacji iOS, zbadajmy, co to jest podpisywanie kodu w ogóle. W prawdziwym życiu, podpisujemy różne kontrakty, umowy na różne rzeczy. Dlaczego podpisujemy te kontrakty? Co podpis oznacza dla nas i dlaczego jest ważny? To proste, ponieważ podpisywanie umów chroni nas prawnie i mamy zaufanie, że jakiekolwiek warunki w umowach nie mogą być zmienione podczas obowiązywania umowy. Podpis zapewnia również bezpieczeństwo, że umowa pochodzi od zaufanych władz, a nie od oszustów. Oznacza to, że podpisywanie umów daje nam pewność, bezpieczeństwo i zaufanie.
Podobnie, podpisywanie kodu jest procesem cyfrowego podpisywania dowolnej formy kodu, aby potwierdzić, kto napisał kod i zagwarantować, że kod nie został zmieniony lub uszkodzony, gdy został podpisany. Podpisywanie kodu wykorzystuje kryptograficzny hash do weryfikacji autentyczności i integralności kodu oprogramowania. W świecie oprogramowania, podpisywanie kodu zapewnia tożsamość autora, integralność kodu, system budowania i wersjonowania, tak aby użytkownicy oprogramowania czuli się pewnie i bezpiecznie podczas korzystania z nich. Podpisywanie kodu używa różnych terminów bezpieczeństwa, takich jak klucz publiczny, klucz prywatny, certyfikaty, podpisy cyfrowe itp. Istnieją różne podejścia do podpisywania kodu używane na różnych platformach np. Linux, Windows, macOS.
iOS Code Signing
Apple podobno ma bardzo potężny mechanizm bezpieczeństwa oprócz kilku ostatnich błędów, które mogłeś przeczytać w wiadomościach. Jest to bardzo trudne dla black-hat hakerów, aby złamać ten mechanizm. Apple używa również silnego mechanizmu podpisywania kodu, aby zapewnić bezpieczeństwo, integralność i bezpieczeństwo aplikacji iOS pobranych z Apple App Store. Przez większość czasu, podpisywanie kodu iOS wydaje się być magią, która dzieje się pod maską. Jeśli to działa, wszyscy są zadowoleni, a jeśli nie, wszyscy wpadają w panikę. Większość inżynierów iOS nie mają pojęcia, co dzieje się pod maską, gdy aplikacje, które napisali jest śpiewane. W ostatnich dniach Apple próbowało uczynić podpisywanie kodu mniej bolesnym poprzez wprowadzenie funkcji automatycznego podpisywania w Xcode, tak aby podpisywanie kodu nie przerywało głównego nurtu rozwoju aplikacji. Podpisywanie kodu na platformie Apple opiera się na kryptografii klucza publicznego w standardzie X.509. Omówimy wszystkie te narzędzia i techniki w dalszej części tej serii.
Why Learn About iOS Code Signing
Jako, że większość zadań związanych z podpisywaniem kodu jest obsługiwana przez Xcode w tych dniach, to dlaczego powinniśmy dbać o podpisywanie kodu i dlaczego powinniśmy inwestować nasz czas, aby dowiedzieć się o tym?
Oto niektóre z powodów, aby dowiedzieć się o podpisywanie kodu internals:
- Minęły dni, kiedy inżynierowie iOS używane do wdrażania aplikacji iOS z Xcode zainstalowany na komputerze lokalnym. Firmy przyjmują DevOps i CI/CD, aby wdrożyć oprogramowanie tak szybko, jak zostało zbudowane, więc wszystkie kompilacje muszą być zautomatyzowane bez interakcji człowieka lub GUI.
- Są tysiące godzin deweloperów zmarnowanych, ponieważ podpisywanie kodu Xcode nie powiodło się i deweloper próbuje naprawić problemy z podpisywaniem kodu poprzez regenerację i naprawę certyfikatów i profili provisioning.
- Narzędzia firm trzecich, takie jak Fastlane, sprawiły, że budowanie skryptów jest znacznie łatwiejsze dla programistów iOS. Jednak, gdy Apple wprowadziło zmiany w podstawowych technologiach, Fastlane ciągle się psuje i deweloperzy spędzają godziny, dni i tygodnie na naprawianiu zepsutych skryptów wdrożeniowych. W niektórych przypadkach inżynierowie muszą czekać, aż nowe zmiany zostaną zaimplementowane w Fastlane.
- Jeśli jesteś programistą/inżynierem iOS i chcesz być inżynierem iOS przez całe swoje życie, to nie musisz się uczyć o tych rzeczach. Jednakże, jeśli chcesz rozwijać się w swojej karierze, to musisz znać podstawowe narzędzia, technologie i cały ekosystem iOS w szczegółach. Nie dostaniesz się do iOS Tech Lead lub iOS Tech Architect lub podobne role, jeśli nie wiesz o tych podstawowych technologii, niezależnie od tego, jak dobre są w swoich umiejętności rozwoju iOS. Jako architekt techniczny, powinieneś być w stanie naprawić podpisywanie kodu lub podobne problemy związane z infrastrukturą szybko i bez polegania na Xcode lub innych narzędziach stron trzecich.
Mam nadzieję, że to wystarczy, aby przekonać o ważności podpisywania kodu. Od Ciebie zależy, czy się go nauczysz, czy go porzucisz.
Wymagania wstępne
Zanurzmy się w świat podpisywania kodu iOS. Pokryjemy wszystko od podstaw, jeśli chodzi o to, co jest potrzebne i co robi pod maską. Aby zacząć, potrzebujemy następujących rzeczy, które wierzę, że każdy już ma, jeśli czytasz ten post.
- macOS
- Apple Developer Membership
- Xcode 9+
Gdy masz to wszystko, jesteś gotowy do kopania w iOS podpisywanie kodu rzeczy.
Korzyści z podpisywania kodu
Apple chce, abyśmy przeszli przez złożony proces podpisywania kodu, ponieważ ma on pewne korzyści dla prawdziwych użytkowników. Użytkownicy aplikacji iOS czują się bezpiecznie, gdy pobierają aplikacje z Apple app store. The code signing ensures that
- The legitimate developer has written this code and it has an identity of the signer or author of the apps.
- Code signing ensures that code has not been altered by someone since written by the author. It guarantees that code produced by the author is original and there is nothing injected into the code since its signed by the author.
- Users can download the apps from the developers that they trust without worrying too much about security.
Podpisywanie kodu jest dla bezpieczeństwa użytkowników iOS, aby czuli się bezpiecznie używając aplikacji, które pobrali z App Store.
Limitations of the Code Signing
Although code signing is for the security of the users, there are some aspects that do not address security issues all the time.
- Podpisywanie kodu zapewnia, że kod pochodzi od legalnego dewelopera, który jest członkiem programu Apple Developer, ale nie gwarantuje, że sam kod jest wolny od luk w zabezpieczeniach.
- Podpisywanie kodu nie gwarantuje, że wtyczki aplikacji, które ładują się dynamicznie podczas wykonywania aplikacji są bezpieczne.
- Nie ma cyfrowego zarządzania prawami lub technologii ochrony kopii dla podpisanego kodu.
Teraz, mamy pokryte znaczenie nauki o podpisywaniu kodu i korzyści i ograniczenia. W następnym poście, przejdziemy przez ważną koncepcję, gdzie proces podpisywania kodu zaczyna się tj. Certificate Signing Requests.
Kontynuuj czytanie Część 2: Żądania podpisywania certyfikatów
Dodaj komentarz