XCBLOG
On Oktober 31, 2021 by adminiOS Code Signing Tutorials
Dies ist Teil 1 der iOS Code Signing Tutorial Serie. Diese Serie behandelt die Grundlagen des iOS Code Signing Prozesses. Sie finden alle Beiträge der Serie unten verlinkt
- iOS Code Signing: 1. Erste Schritte
- iOS Code Signing: 2. Certificate Signing Requests
- iOS Code Signing: 3. Certificates
- iOS Code Signing: 4. Provisioning Profiles
- iOS Code Signing: 5. Signing iOS App
*******************************************************
Eigentlich laufen auf iOS-Geräten nur Apps, die von vertrauenswürdigen Entwicklern signiert wurden, es sei denn, Sie haben iOS-Geräte jailbroken. Wenn Sie ein iOS-Entwickler sind, haben Sie bestimmt schon einmal mit Code Signing gekämpft. Da Code Signing eine der schmerzhaften und mühsamen Aufgaben für iOS-Entwickler ist, können sie nicht vor Code Signing-Aktivitäten weglaufen. Code Signing und die Bereitstellung von Profilen sind ein ständiges Ärgernis und werden es auch weiterhin bleiben, bis Entwickler die Grundlagen des Code Signing vollständig verstanden haben. Dies ist ein einführender Beitrag, der den Code Signing-Prozess mit seinen Vorteilen und Einschränkungen erklärt.
Über diese Serie
Code Signing von iOS-Apps ist eines der heißen Themen für jeden iOS-Entwickler. Obwohl es mehrere online verfügbare Ressourcen gibt und Apple eine saubere Dokumentation über den Code Signing Prozess hat, ist es immer noch ein Mysterium. In dieser Serie werden wir versuchen, den Code-Signierungsprozess von Grund auf zu verstehen, einschließlich der Voraussetzungen für die Code-Signierung und des eigentlichen Code-Signierungsprozesses selbst. Wir werden auch die GUI und die Kommandozeile erforschen, wann immer dies möglich ist. Wir werden mit Certificate Signing Requests beginnen, um ein iOS-Entwicklungszertifikat zu erhalten, dann werden wir das Zertifikat und seine internen Teile behandeln. Nachdem wir die Zertifikate verstanden haben, werden wir tief in die Bereitstellungsprofile eintauchen und schließlich den Prozess der Codesignierung verstehen.
Diese Serie ist in meinen eigenen Worten oder in meiner eigenen Sprache geschrieben, indem ich einige Nachforschungen im Internet und in der Dokumentation von Apple angestellt habe. Ich habe alle diese Referenzmaterialien im letzten Beitrag behandelt. Ich habe auch einige Screenshots aus dem Apple Developer Portal und Xcode beigefügt, damit die Leser die Konzepte verstehen können. Ich habe versucht, alle sensiblen Inhalte zu verbergen, aber wenn etwas versehentlich aufgedeckt wurde, bitte nicht auf mich einhacken 🙂
Code Signing
Bevor wir uns mit Apples Art und Weise der Code-Signierung von iOS-Apps beschäftigen, sollten wir uns ansehen, was Code Signing im Allgemeinen ist. Im wirklichen Leben unterschreiben wir verschiedene Verträge und Vereinbarungen für unterschiedliche Dinge. Warum unterschreiben wir diese Verträge? Was bedeutet die Unterschrift für uns und warum ist sie wichtig? Ganz einfach, weil wir durch die Unterzeichnung von Verträgen rechtlich abgesichert sind und darauf vertrauen können, dass die Bedingungen in den Verträgen nicht geändert werden können, solange der Vertrag besteht. Die Unterschrift gewährleistet auch die Sicherheit, dass der Vertrag von einer vertrauenswürdigen Behörde stammt und nicht von Betrügern. Das bedeutet, dass die Unterzeichnung von Verträgen uns Sicherheit und Vertrauen gibt.
In ähnlicher Weise ist die Codesignierung ein Prozess, bei dem jede Form von Code digital signiert wird, um zu bestätigen, wer den Code geschrieben hat, und um zu garantieren, dass der Code zum Zeitpunkt der Signatur nicht verändert oder beschädigt wurde. Bei der Codesignierung wird ein kryptografischer Hash verwendet, um die Authentizität und Integrität des Software-Codes zu überprüfen. In der Softwarewelt gewährleistet die Codesignierung die Identität des Autors, die Integrität des Codes, das Build-System und die Versionskontrolle, so dass sich die Benutzer der Software sicher fühlen, wenn sie diese verwenden. Bei der Codesignierung werden verschiedene Sicherheitsbegriffe wie öffentlicher Schlüssel, privater Schlüssel, Zertifikate, digitale Signaturen usw. verwendet. Es gibt verschiedene Ansätze für das Code Signing auf den verschiedenen Plattformen, z.B. Linux, Windows, macOS.
iOS Code Signing
Apple hat angeblich sehr leistungsfähige Sicherheitsmechanismen, abgesehen von einigen kürzlichen Pannen, die Sie vielleicht in den Nachrichten gelesen haben. Für Black-Hat-Hacker ist es sehr schwer, diesen Mechanismus zu knacken. Apple verwendet außerdem einen starken Code-Signatur-Mechanismus, um die Sicherheit, Integrität und Unversehrtheit der iOS-Apps zu gewährleisten, die aus dem Apple App Store heruntergeladen werden. Die meiste Zeit scheint die iOS-Codesignierung wie ein Wunder zu sein, das unter der Haube passiert. Wenn es funktioniert, sind alle zufrieden, wenn nicht, geraten alle in Panik. Die meisten iOS-Ingenieure haben keine Ahnung, was unter der Haube passiert, wenn die von ihnen geschriebenen Apps signiert werden. In den letzten Tagen hat Apple versucht, die Codesignierung weniger schmerzhaft zu machen, indem es die Funktion „Automatic Signing“ in Xcode eingeführt hat, so dass die Codesignierungsaktivität den Hauptentwicklungsfluss nicht unterbricht. Die Codesignierung auf der Apple-Plattform basiert auf der Public-Key-Kryptographie nach dem X.509-Standard. Wir werden all diese Tools und Techniken später in dieser Serie besprechen.
Warum über iOS Code Signing lernen
Da die meisten Code Signing-Aufgaben heutzutage von Xcode erledigt werden, warum sollten wir uns dann um das Code Signing kümmern und warum sollten wir unsere Zeit investieren, um es zu lernen?
Hier sind einige der Gründe, sich mit den Interna der Codesignierung zu befassen:
- Vorbei sind die Zeiten, in denen iOS-Ingenieure iOS-Apps über Xcode bereitstellten, das auf dem lokalen Computer installiert war. Unternehmen setzen DevOps und CI/CD ein, um Software so schnell wie möglich bereitzustellen, so dass alle Builds ohne menschliche oder GUI-Interaktionen automatisiert werden müssen.
- Tausende von Entwicklerstunden werden verschwendet, weil die Code-Signierung von Xcode fehlgeschlagen ist und die Entwickler versuchen, die Code-Signierungsprobleme zu beheben, indem sie Zertifikate neu generieren und reparieren und Profile bereitstellen.
- Die Tools von Drittanbietern wie Fastlane haben die Erstellung von Build-Skripten für die iOS-Entwickler viel einfacher gemacht. Wenn Apple jedoch Änderungen an den zugrundeliegenden Technologien vornimmt, bricht Fastlane immer wieder zusammen und Entwickler verbringen Stunden, Tage und Wochen damit, die fehlerhaften Deployment-Skripte zu reparieren. In manchen Fällen müssen die Entwickler warten, bis neue Änderungen in Fastlane implementiert werden.
- Wenn Sie iOS-Entwickler/Ingenieur sind und Ihr ganzes Leben lang iOS-Ingenieur bleiben wollen, müssen Sie diese Dinge nicht lernen. Wenn Sie jedoch in Ihrer Karriere aufsteigen wollen, müssen Sie die zugrunde liegenden Tools, Technologien und das gesamte iOS-Ökosystem im Detail kennen. Sie werden es nicht bis zum iOS Tech Lead oder iOS Tech Architect oder ähnlichen Positionen bringen, wenn Sie diese zugrunde liegenden Technologien nicht kennen, egal wie gut Sie in der iOS-Entwicklung sind. Als Tech Architect solltest du in der Lage sein, Code Signing oder ähnliche infrastrukturbezogene Probleme schnell zu beheben, ohne dich auf Xcode oder andere Tools von Drittanbietern verlassen zu müssen.
Ich hoffe, das reicht, um dich von der Wichtigkeit von Code Signing zu überzeugen. Es liegt an Ihnen, ob Sie es lernen oder lassen.
Voraussetzungen
Lassen Sie uns in die Welt des iOS Code Signing eintauchen. Wir werden alles von Grund auf abdecken, was benötigt wird und was es unter der Haube tut. Um loszulegen, brauchen wir die folgenden Dinge, von denen ich glaube, dass jeder sie schon hat, wenn er diesen Beitrag liest.
- macOS
- Apple Developer Membership
- Xcode 9+
Wenn du all diese Dinge hast, bist du bereit, in die iOS Code Signing-Sache einzutauchen.
Vorteile von Code Signing
Apple möchte, dass wir den komplexen Code Signing-Prozess durchlaufen, weil er für echte Benutzer einige Vorteile hat. Die Benutzer von iOS-Apps fühlen sich sicher, wenn sie die Apps aus dem Apple App Store herunterladen. Die Codesignierung stellt sicher, dass
- der rechtmäßige Entwickler diesen Code geschrieben hat und dass er eine Identität des Unterzeichners oder Autors der Apps hat.
- Die Codesignierung stellt sicher, dass der Code nicht von jemandem geändert wurde, seit er vom Autor geschrieben wurde. Es garantiert, dass der vom Autor produzierte Code original ist und nichts in den Code eingefügt wurde, da er vom Autor signiert wurde.
- Benutzer können die Apps von den Entwicklern herunterladen, denen sie vertrauen, ohne sich zu viele Gedanken über die Sicherheit zu machen.
Code Signing dient der Sicherheit der iOS-Nutzer, so dass sie sich sicher fühlen, wenn sie die Apps verwenden, die sie aus dem App Store heruntergeladen haben.
Grenzen des Code Signing
Obwohl Code Signing der Sicherheit der Nutzer dient, gibt es einige Aspekte, die nicht immer die Sicherheit betreffen.
- Code Signing stellt sicher, dass der Code von einem legitimen Entwickler stammt, der Mitglied des Apple Developer Programms ist, garantiert aber nicht, dass der Code selbst frei von Sicherheitslücken ist.
- Code Signing garantiert nicht, dass App-Plugins, die während der Ausführung von Apps dynamisch geladen werden, sicher sind.
- Es gibt keine digitale Rechteverwaltung oder Kopierschutztechnologie für den signierten Code.
Nun haben wir die Bedeutung des Lernens über Code Signing und die Vorteile und Einschränkungen behandelt. Im nächsten Beitrag werden wir das wichtige Konzept durchgehen, mit dem der Code Signing Prozess beginnt, d.h. Certificate Signing Requests.
Lesen Sie weiter in Teil 2-: Certificate Signing Requests
Schreibe einen Kommentar