Vad är en provisorisk profil och kodsignering i iOS?

Källa:

Apples definition: Stackoverflow och internet 🤓: En provisorisk profil är en samling digitala enheter som på ett unikt sätt binder utvecklare och enheter till ett auktoriserat iPhone-utvecklingsteam och gör det möjligt att använda en enhet för testning.

Till skillnad från Android kan du inte installera vilken app som helst på en iOS-enhet. Den måste först signeras av Apple. Men när du utvecklar en app vill du förmodligen testa den innan du skickar den till Apple för godkännande. Provisioneringsprofilen fungerar som en länk mellan enheten och utvecklarkontot. Under utvecklingen väljer du vilka enheter som kan köra din app och vilka apptjänster som din app kan få tillgång till. En provisioneringsprofil hämtas från ditt utvecklarkonto och bäddas in i apppaketet, och hela paketet kodsigneras. En utvecklingsprovisioneringsprofil måste installeras på varje enhet som du vill köra din applikationskod på. Om informationen i tillhandahållandeprofilen inte stämmer överens med vissa kriterier kommer din app inte att startas.

Varje Development Provisioning Profile kommer att innehålla:

  • Utvecklingscertifikat – utvecklingscertifikat. Dessa är till för utvecklare som vill testa appen på en fysisk enhet medan de skriver kod.
  • Unique Device Identifiers (Förteckning över enheter som appen kan köras på)
  • ett App-ID (detta kan innehålla ett jokertecken * för att kunna användas för många tillämpningar med liknande buntidentifierare). – Ett App-ID är en tvådelad sträng som används för att identifiera en eller flera appar från ett enda utvecklingsteam.

Enheter som anges i tillhandahållandeprofilen kan endast användas för testning av de personer vars iPhone-utvecklingscertifikat ingår i profilen. 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, I bilden ovan kan du se att AppID kontrolleras, certifikatet valideras, teamet matchas, kapaciteter och rättigheter matchas .

Om alla ovanstående steg är framgångsrika skickas den signerade binära filen till enheten och valideras mot samma provisioneringsprofil i appen och lanseras slutligen. Om något av dessa villkor misslyckas kommer appen inte att installeras – och du kommer att se en gråmulen appikon.

Skillnaden mellan utvecklings- och distributionsprofiler är att distributionsprofiler inte anger några enhets-ID:er. Om du vill släppa en app som ska begränsas till ett antal registrerade enheter måste du använda en Ad-Hoc-profil för det.

Distributionsprofiler används för att skicka in en app till App Store för distribution. Efter att appen granskats av apple signerar de appen med sin egen signatur som kan köras på vilken enhet som helst.

Det är bra, men vad är kodsignering?

Signering av din app gör att iOS kan identifiera vem som har signerat appen och verifiera att appen inte har ändrats sedan du signerade den. Signeringsidentiteten består av ett offentligt-privat nyckelpar som Apple skapar åt dig.

Asymmetrisk kryptografi

Asymmetrisk kryptografi använder en offentlig nyckel och en privat nyckel. Användarna måste behålla sin privata nyckel för sig själva, men de kan dela den offentliga nyckeln. Och med hjälp av dessa offentliga och privata nycklar kan en användare bevisa att han verkligen är sig själv.

Hur asymmetrisk kryptografi fungerar?

Antag att det finns en UserA och en UserB .

  • UserA skapar en PrivateKeyA + PublicKeyA.
  • UserB skapar en PrivateKeyB + PublicKeyB.

För att säkra kommunikationen mellan UserA och UserB,

  • UserA delar sin PublicKeyA med 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. Det innehåller också den offentliga nyckeln som kommer att ingå i certifikatet. Den privata nyckeln skapas vanligtvis samtidigt som du skapar CSR:n, vilket skapar ett nyckelpar. En certifikatutfärdare använder en CSR för att skapa ditt certifikat, men den behöver inte din privata nyckel. Du måste hålla din privata nyckel hemlig. Certifikatet som skapas med ett visst CSR fungerar endast med den privata nyckel som skapades med det. Om du förlorar den privata nyckeln kommer certifikatet inte längre att fungera.

(valfritt – se den här länken för att förstå hur CSR fungerar för SSL-certifikat. Proceduren och arbetet är nästan likadant)

Processen :

  • Skapa en begäran om signering av certifikat (Certificate Signing Request, CSR) via programmet Keychain Access.
  • Keychain Application skapar en private key(den privata nyckeln lagras i nyckelknippan) och en certSigningRequest fil som du sedan laddar upp till Apple.
  • Apple kontrollerar begäran och utfärdar ett certifikat åt dig. Certifikatet kommer att innehålla den public key som kan laddas ner till ditt system. När du har laddat ner det måste du lägga in det i programmet Keychain Access genom att dubbelklicka på det. Certifikatet kommer att skjutas in i nyckelringen och paras ihop med den privata nyckeln för att bilda Code Signing Identity.
  • Slutligt, vid installationstillfället av appen, matchar den privata nyckeln som används för att signera appen den offentliga nyckeln i certifikatet. Om det misslyckas installeras inte appen.

Det var allt. !

Njut!!

Om du tyckte om att läsa det här inlägget, dela gärna och ge några klappar så att andra kan hitta det 👏👏👏👏👏 !!!!

Du kan följa mig på Medium för färska artiklar. Du kan också komma i kontakt med mig på LinkedIn och Twitter.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *