Was ist ein Provisioning-Profil & Code Signing in iOS?

Quelle: Stackoverflow und Internet 🤓.

Apple’s Definition: Ein Bereitstellungsprofil ist eine Sammlung digitaler Entitäten, die Entwickler und Geräte eindeutig an ein autorisiertes iPhone-Entwicklungsteam bindet und es ermöglicht, ein Gerät für Tests zu verwenden.

Im Gegensatz zu Android kann man auf einem iOS-Gerät nicht jede beliebige App installieren. Sie muss erst von Apple signiert werden. Wenn Sie jedoch eine App entwickeln, möchten Sie sie wahrscheinlich testen, bevor Sie sie zur Genehmigung an Apple senden. Das Bereitstellungsprofil dient als Verbindung zwischen dem Gerät und dem Entwicklerkonto. Während der Entwicklung wählen Sie aus, auf welchen Geräten Ihre App ausgeführt werden kann und auf welche App-Dienste Ihre App zugreifen kann. Ein Bereitstellungsprofil wird von Ihrem Entwicklerkonto heruntergeladen und in das App-Bundle eingebettet, wobei das gesamte Bundle mit einem Code signiert wird. Ein Development Provisioning Profile muss auf jedem Gerät installiert werden, auf dem Sie Ihren Anwendungscode ausführen möchten. Wenn die Informationen im Bereitstellungsprofil nicht mit bestimmten Kriterien übereinstimmen, kann Ihre Anwendung nicht gestartet werden.

Jedes Development Provisioning Profile enthält:

  • Development Certificates – Entwicklungszertifikate. Diese sind für Entwickler, die die App auf einem physischen Gerät testen wollen, während sie den Code schreiben.
  • Einzigartige Gerätekennungen (Liste der Geräte, auf denen die App ausgeführt werden kann)
  • eine App-ID (diese kann einen *-Platzhalter enthalten, um für viele Anwendungen mit ähnlichen Bündelkennungen verwendet zu werden). – Eine App-ID ist eine zweiteilige Zeichenfolge, die zur Identifizierung einer oder mehrerer Apps eines einzelnen Entwicklerteams verwendet wird.

Die im Bereitstellungsprofil angegebenen Geräte können nur von den Personen für Tests verwendet werden, deren iPhone-Entwicklungszertifikate im Profil enthalten sind. A single device can contain multiple provisioning profiles.

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, Aus dem obigen Bild können Sie ersehen, dass die AppID überprüft wird, das Zertifikat validiert wird, das Team abgeglichen wird, die Fähigkeiten und Berechtigungen abgeglichen werden.

Wenn alle oben genannten Schritte erfolgreich sind, wird die signierte Binärdatei an das Gerät gesendet und anhand des gleichen Bereitstellungsprofils in der App validiert und schließlich gestartet. Wenn eine dieser Bedingungen fehlschlägt, wird die App nicht installiert – und Sie sehen ein ausgegrautes App-Symbol.

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.

Die Distributionsprofile werden verwendet, um eine App im App Store zur Verteilung einzureichen. Nachdem die App von Apple geprüft wurde, signieren sie die App mit ihrer eigenen Signatur, die auf jedem Gerät ausgeführt werden kann.

Das ist alles schön und gut, aber was ist Code Signing?

Das Signieren Ihrer App ermöglicht es iOS, zu erkennen, wer Ihre App signiert hat, und zu überprüfen, dass Ihre App seit der Signierung nicht verändert wurde. Die Signieridentität besteht aus einem öffentlich-privaten Schlüsselpaar, das Apple für Sie erstellt.

Asymmetrische Kryptographie

Asymmetrische Kryptographie verwendet einen öffentlichen Schlüssel und einen privaten Schlüssel. Die Benutzer müssen ihren privaten Schlüssel für sich behalten, aber sie können den öffentlichen Schlüssel gemeinsam nutzen. Und mit Hilfe dieser öffentlichen und privaten Schlüssel kann ein Benutzer beweisen, dass er tatsächlich er selbst ist.

Wie funktioniert asymmetrische Kryptographie?

Angenommen, es gibt einen BenutzerA und einen BenutzerB.

  • BenutzerA erstellt einen PrivateKeyA + PublicKeyA.
  • BenutzerB erstellt einen PrivateKeyB + PublicKeyB.

Um die Kommunikation zwischen UserA und UserB zu sichern,

  • UserA teilt seinen PublicKeyA mit 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. Sie enthält auch den öffentlichen Schlüssel, der in das Zertifikat aufgenommen wird. Ein privater Schlüssel wird in der Regel gleichzeitig mit der CSR erstellt, wodurch ein Schlüsselpaar entsteht. Eine Zertifizierungsstelle wird eine CSR verwenden, um Ihr Zertifikat zu erstellen, benötigt aber nicht Ihren privaten Schlüssel. Sie müssen Ihren privaten Schlüssel geheim halten. Das mit einer bestimmten CSR erstellte Zertifikat funktioniert nur mit dem privaten Schlüssel, der mit dieser CSR erzeugt wurde. Wenn Sie also den privaten Schlüssel verlieren, funktioniert das Zertifikat nicht mehr.

(optional – siehe diesen Link, um zu verstehen, wie CSR für SSL-Zertifikate funktioniert. Das Verfahren und die Funktionsweise sind fast identisch)

Der Prozess :

  • Erstellen Sie eine Certificate Signing Request (CSR) über die Keychain Access Application.
  • Die Schlüsselbundanwendung erstellt ein private key(der private Schlüssel wird im Schlüsselbund gespeichert) 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 das public key, das Sie auf Ihr System herunterladen können. Nachdem Sie es heruntergeladen haben, müssen Sie es mit einem Doppelklick in Ihre Schlüsselbund-Anwendung einfügen. Das Zertifikat wird in den Schlüsselbund verschoben und mit dem privaten Schlüssel gepaart, um die Code Signing Identity zu bilden.
  • Schließlich wird bei der Installation der App überprüft, ob der private Schlüssel, mit dem die App signiert wurde, mit dem öffentlichen Schlüssel im Zertifikat übereinstimmt. Wenn dies nicht der Fall ist, wird die App nicht installiert.

Das war’s.

Viel Spaß!!!

Wenn Ihnen dieser Beitrag gefallen hat, teilen Sie ihn bitte und geben Sie ein paar Klicks, damit auch andere ihn finden können 👏👏👏👏👏 !!!!

Sie können mir auf Medium für neue Artikel folgen. Verbinden Sie sich auch mit mir auf LinkedIn und Twitter.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.