Qu’est-ce qu’un profil de provisionnement et une signature de code dans iOS ?

Source : Stackoverflow et internet 🤓.

Définition d’Apple : Un profil de provisionnement est un ensemble d’entités numériques qui lie de manière unique les développeurs et les appareils à une équipe de développement iPhone autorisée et permet d’utiliser un appareil pour des tests.

Contrairement à Android, vous ne pouvez pas installer n’importe quelle application sur un appareil iOS. Elle doit d’abord être signée par Apple. Cependant, lorsque vous développez une application, vous souhaitez probablement la tester avant de l’envoyer à Apple pour approbation. Le profil de provisionnement fait office de lien entre l’appareil et le compte de développeur. Pendant le développement, vous choisissez les appareils qui peuvent exécuter votre application et les services auxquels elle peut accéder. Un profil d’approvisionnement est téléchargé à partir de votre compte de développeur et intégré au paquet d’applications, et l’ensemble du paquet est signé par un code. Un profil de provisionnement de développement doit être installé sur chaque appareil sur lequel vous souhaitez exécuter le code de votre application. Si les informations du profil de provisionnement ne correspondent pas à certains critères, votre app ne sera pas lancée.

Chaque profil de provisionnement de développement contiendra :

  • Certificats de développement – certificat de développement. Ils sont destinés aux développeurs qui veulent tester l’app sur un appareil physique tout en écrivant du code.
  • Identifiants d’appareils uniques (liste des appareils sur lesquels l’app peut fonctionner)
  • un App ID (cela peut inclure un caractère générique * pour être utilisé pour de nombreuses applications avec des identifiants de regroupement similaires). – Un App ID est une chaîne en deux parties utilisée pour identifier une ou plusieurs apps d’une seule équipe de développement.

Les appareils spécifiés dans le profil de provisionnement peuvent être utilisés pour les tests uniquement par les personnes dont les certificats de développement iPhone sont inclus dans le profil. 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, à partir de l’image ci-dessus, vous pouvez voir que l’AppID est vérifié, le certificat est validé, l’équipe est appariée, les capacités et les droits sont appariés .

Si toutes les étapes ci-dessus sont réussies, le binaire signé est envoyé à l’appareil et est validé par rapport au même profil de provisionnement dans l’app et enfin lancé. Si l’une de ces conditions échoue, alors l’app ne s’installera pas – et vous verrez une icône d’app grisée.

La différence entre les profils de développement et de distribution est que les profils de distribution ne spécifient aucun ID d’appareil. Si vous voulez publier une App qui doit être limitée à un certain nombre d’appareils enregistrés, vous devez utiliser un profil Ad-Hoc pour cela.

Les profils de distribution sont utilisés pour soumettre une app à l’App Store pour la distribution. Après l’examen de l’application par l’App Store, ils signent l’application avec leur propre signature qui peut être exécutée sur n’importe quel appareil.

C’est très bien, mais qu’est-ce que la signature de code ?

La signature de votre application permet à iOS d’identifier qui a signé votre application et de vérifier que votre application n’a pas été modifiée depuis que vous l’avez signée. L’identité de signature consiste en une paire de clés publique-privée qu’Apple crée pour vous.

Cryptographie asymétrique

La cryptographie asymétrique utilise une clé publique et une clé privée. Les utilisateurs doivent garder leur clé privée pour eux, mais ils peuvent partager la clé publique. Et en utilisant ces clés publiques et privées, un utilisateur peut prouver qu’il est bien lui-même.

Comment fonctionne la cryptographie asymétrique ??

Supposons qu’il y ait un UtilisateurA et un UtilisateurB .

  • L’UtilisateurA crée une PrivateKeyA + PublicKeyA.
  • L’utilisateurB crée une PrivateKeyB + PublicKeyB.

Pour sécuriser la communication entre l’utilisateurA et l’utilisateurB,

  • L’utilisateurA partage sa PublicKeyA avec l’utilisateurB .
  • 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. Il contient également la clé publique qui sera incluse dans le certificat. Une clé privée est généralement créée en même temps que vous créez le CSR, ce qui constitue une paire de clés. Une autorité de certification utilisera une RSC pour créer votre certificat, mais elle n’a pas besoin de votre clé privée. Vous devez garder votre clé privée secrète. Le certificat créé à l’aide d’une RSC particulière ne fonctionnera qu’avec la clé privée qui a été générée avec cette dernière. Donc si vous perdez la clé privée, le certificat ne fonctionnera plus.

(facultatif – référez-vous à ce lien pour comprendre comment fonctionne la RSC pour les certificats SSL. La procédure et le fonctionnement sont presque similaires)

Le processus :

  • Créer une demande de signature de certificat (CSR) via l’application Keychain Access.
  • L’application Trousseau créera un private key(la clé privée sera stockée dans le trousseau) et un certSigningRequest fichier que vous téléchargerez ensuite vers Apple.
  • Apple prouvera la demande et émettra un certificat pour vous. Le certificat contiendra le public key qui pourra être téléchargé sur votre système. Après l’avoir téléchargé, vous devez le mettre dans votre application d’accès au trousseau de clés en double cliquant dessus. Le certificat sera poussé dans le trousseau et jumelé avec la clé privée pour former l’identité de signature de code.
  • Enfin, au moment de l’installation de l’app, la clé privée utilisée pour signer l’app correspond à la clé publique du certificat. En cas d’échec, l’app n’est pas installée.

C’est tout. !

Amusez-vous !

Si vous avez aimé lire ce billet, partagez-le et donnez des applaudissements pour que d’autres puissent le trouver 👏👏👏👏👏 !!!!

Vous pouvez me suivre sur Medium pour des articles frais. Vous pouvez également me contacter sur LinkedIn et Twitter.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *