iOS Code Signing & Provisioning in a Nutshell

Ich entwickle jetzt seit mehr als 3 Jahren Apps und eine Sache, die mich immer noch ärgert, ist Code Signing und Provisioning in iOS. Was sind Signing Identities? Warum muss ich als Entwickler Provisioning-Profile erstellen und mich um solche Dinge kümmern? Wenn Sie keine guten Antworten auf diese Fragen haben und wirklich keine Lust haben, die Apple Docs durchzulesen, ist dies hoffentlich der Artikel, der den gesamten Prozess für Sie und für mich als Referenz in weniger als 5 Minuten erklärt.

Ich bin sicher, dass viele von Ihnen Dinge schnell lernen können, indem sie einfach einen Text durchlesen, aber was ich wirklich mag, ist es, Dinge auf visuelle Weise mit Kästen und Pfeilen erklärt zu bekommen. Das größte Problem für mich ist, dass es kein Diagramm oder eine Grafik gibt, die alle relevanten Teile herauspickt und zeigt, wie alles zusammen auf leicht verständliche Weise funktioniert. Das ist der Grund, warum ich am Ende dieses Beitrags versuchen werde, eine zu erstellen. Fangen wir an.

Zunächst wollen wir die wichtigsten Begriffe zusammentragen, über die man stolpert, wenn man im Internet etwas zum Thema Provisioning und Code Signing sucht.

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

Xcode &Member Center

Wenn Sie ein iOS-Entwickler sind, werden Sie normalerweise Xcode verwenden, um Ihre App und Ressourcen zu erstellen und zu verwalten und sie in den Appstore hochzuladen. Das ist alles, was du über Xcode wissen musst, um diesem Beitrag zu folgen. Wenn du mehr darüber lesen möchtest, klicke hier: Xcode

Nachdem du dich für das Apple Developer Program registriert hast, kannst du dich im Member Center anmelden. Hier können Sie Provisioning Profiles, App IDs, Zertifikate etc. erstellen. Teile des Member Centers sind direkt mit Xcode verbunden. Zum Beispiel können Sie in Ihren Xcode-Einstellungen Ihre Signing Identities sehen und erstellen oder Provisioning Profiles herunterladen und aktualisieren.

Signing Identity, Public & Private Key, Keychain Application

Eine Sache, die wir klären müssen, ist der Begriff Signing. Durch das Signieren Ihrer App kann iOS feststellen, wer Ihre App signiert hat, und überprüfen, ob Ihre App seit dem Signieren nicht verändert wurde. Die Signieridentität besteht aus einem öffentlich-privaten Schlüsselpaar, das Apple für Sie erstellt. Stellen Sie sich den öffentlichen Schlüssel als einen „Lock-Only“-Mechanismus vor, d. h. Sie müssen den privaten Schlüssel kennen, um Daten wieder zu entpacken, zu entsperren oder zu entschlüsseln.

Woher kommen das öffentliche und das private Schlüsselpaar und wie fordern Sie ein Zertifikat an, das sie enthält? All diese Magie geschieht, wenn Sie eine Zertifikatsignierungsanforderung (Certificate Signing Request, CSR) über die Keychain Access Application erstellen. Wenn Sie dies tun, erstellt die Schlüsselbundanwendung einen privaten Schlüssel und eine certSigningRequest-Datei, die Sie dann zu Apple hochladen. Apple prüft die Anfrage und stellt ein Zertifikat für Sie aus. Das Zertifikat enthält den öffentlichen Schlüssel, den Sie auf Ihr System herunterladen können. Nachdem Sie ihn heruntergeladen haben, müssen Sie ihn durch einen Doppelklick in Ihre Schlüsselbund-Anwendung einfügen. Es wird von kryptografischen Funktionen verwendet, um eine eindeutige Signatur für Ihre Anwendung zu erzeugen, die im Grunde Ihre Code Signing Identity ist.

Das Zertifikat wird auch über das Mitgliederzentrum verfügbar sein, aber es enthält nur den öffentlichen Schlüssel, also bewahren Sie den privaten Schlüssel sicher auf.

Ein Zwischenzertifikat muss sich ebenfalls in Ihrem Schlüsselbund befinden, um sicherzustellen, dass Ihr Entwickler- oder Vertriebszertifikat von einer anderen Zertifizierungsstelle ausgestellt wird. Ich weiß, das klingt ein bisschen verwirrend, aber so funktioniert es. Es wird automatisch installiert, wenn Sie Xcode zum ersten Mal einrichten. Im Grunde müssen Sie sich also nicht so sehr darum kümmern, da es automatisch konfiguriert wird.

Provisioning Profile & App ID

Wie wir wissen, hält Apple die Dinge gerne sicher, daher ist es nicht möglich, eine App auf einem iOS-Gerät zu installieren, das nur das Zertifikat verwendet. Hier kommen Provisioning Profiles ins Spiel. Auf jedem Gerät, auf dem Ihr Anwendungscode laufen soll, muss ein Provisioning Profile installiert werden. Jedes Entwicklungsbereitstellungsprofil enthält eine Reihe von iPhone-Entwicklungszertifikaten, eindeutige Gerätekennungen und eine App-ID. Eine App-ID ist eine zweiteilige Zeichenfolge, die zur Identifizierung einer oder mehrerer Apps eines einzelnen Entwicklungsteams verwendet wird.

Geräte, die im Development Provisioning Profile angegeben sind, können nur von den Personen zum Testen verwendet werden, deren Entwicklungszertifikate im Profil enthalten sind. Ein einzelnes Gerät kann mehrere Bereitstellungsprofile enthalten. Der Unterschied zwischen Entwicklungs- und Verteilungsprofilen besteht darin, dass in Verteilungsprofilen keine Geräte-IDs angegeben sind. Wenn Sie eine App freigeben wollen, die auf eine bestimmte Anzahl von registrierten Geräten beschränkt sein soll, müssen Sie dafür ein Ad-Hoc-Profil verwenden.

Diagramm

Hier ist das Diagramm, das ich erstellt habe. Wenn Sie etwas entdecken, was ich übersehen oder falsch erklärt habe, lassen Sie es mich bitte wissen. Wie gesagt, dies ist das erste Mal, dass ich wirklich versucht habe, mich mit dem Innenleben von Provisioning und Code Signing auseinanderzusetzen. Ich weiß, dass es noch viel mehr zu besprechen gibt, aber ich denke, dies ist ein guter Anfang für alles rund um dieses Thema. Ich werde versuchen, diesen Beitrag aktuell zu halten und alles Falsche so schnell wie möglich zu korrigieren.

  1. Xcode wird installiert und das Zwischenzertifikat wird in den Schlüsselbund geschoben
  2. Certificate Signing Request (CSR) wird erstellt.
  3. Der private Schlüssel wird zusammen mit der CSR-Erstellung generiert und im Schlüsselbund gespeichert
  4. Die CSR wird in das Member Center hochgeladen
  5. Apple prüft alles und stellt das Zertifikat aus
  6. Das Zertifikat wird auf den Computer heruntergeladen
  7. Das Zertifikat wird in den Schlüsselbund verschoben und mit dem privaten Schlüssel gepaart, um die Code Signing Identity zu bilden
  8. Das Provisioning Profile wird mit einem Zertifikat erstellt, App ID und Device Identifiers erstellt und von Xcode heruntergeladen
  9. Xcode signiert die App und schiebt das Provisioning Profile auf das Gerät
  10. iOS prüft, ob alles korrekt konfiguriert ist.Das bedeutet, dass das Provisioning Profile das Zertifikat, das Sie zum Signieren der App verwendet haben, Ihre Geräte-UDID und die korrekte App-ID enthalten sollte.
  11. Ihre App sollte jetzt laufen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.