iOS Code Signing & Provisioning in a Nutshell

Sviluppo applicazioni da più di 3 anni ormai e 1 cosa che ancora mi infastidisce è il Code Signing e Provisioning in iOS. Cosa sono le identità di firma? Perché devo creare profili di provisioning e preoccuparmi di queste cose come sviluppatore? Se non avete nessuna buona risposta a queste domande e non volete davvero leggere i documenti Apple, questo spero sia l’articolo che espone l’intero processo per voi e per me come riferimento in meno di 5 minuti.

Sono sicuro che molti di voi possono imparare le cose velocemente solo leggendo un testo, ma quello che mi piace davvero, è ottenere le cose spiegate in modo visivo con caselle e frecce. Quindi il più grande problema per me è che non c’è un grafico che raccolga tutte le parti rilevanti e mostri come tutto funziona insieme in un modo facile da capire. Questo è il motivo per cui cercherò di crearne uno alla fine di questo post. Cominciamo.

Prima di tutto, raccogliamo i termini principali, in cui si inciampa quando si cerca di trovare qualsiasi cosa relativa al Provisioning e al Code Signing su Internet.

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

Xcode & Member Center

Se sei uno sviluppatore iOS di solito usi Xcode per creare e gestire le tue app e risorse e caricarle sull’Appstore. Questo è tutto quello che devi sapere su Xcode per seguire questo post. se vuoi saperne di più clicca qui: Xcode

Dopo esserti registrato all’Apple Developer Program potrai accedere al Member Center. Questo è il luogo dove puoi creare profili di provisioning, App ID, certificati ecc. Alcune parti del Member Center sono direttamente collegate a Xcode. Per esempio, puoi vedere e creare le tue Signing Identities o scaricare e aggiornare i Provisioning Profiles nelle tue Xcode Settings.

Signing Identity, Public & Private Key, Keychain Application

Una cosa che dobbiamo chiarire è il termine Signing. Firmare la vostra applicazione permette a iOS di identificare chi ha firmato la vostra applicazione e di verificare che la vostra applicazione non sia stata modificata da quando l’avete firmata. La Signing Identity consiste in una coppia di chiavi pubbliche e private che Apple crea per voi. Pensa alla chiave pubblica come a un meccanismo di blocco, quindi devi conoscere la chiave privata per scartare, sbloccare o decodificare nuovamente i dati.

Da dove vengono la coppia di chiavi pubbliche e private e come si richiede un certificato che le contenga? Tutta questa magia avviene quando si crea una Certificate Signing Request (CSR) attraverso l’applicazione Keychain Access. Se lo fai, l’applicazione Keychain creerà una chiave privata e un file certSigningRequest che poi caricherai ad Apple. Apple proverà la richiesta ed emetterà un certificato per te. Il certificato conterrà la chiave pubblica che potrà essere scaricata sul tuo sistema. Dopo averlo scaricato dovrai metterlo nella tua applicazione Keychain Access facendo doppio clic su di esso. Viene usato dalle funzioni crittografiche per generare una firma unica per la tua applicazione, che è fondamentalmente la tua Code Signing Identity.

Il certificato sarà anche disponibile attraverso il Member Center, ma conterrà solo la chiave pubblica, quindi tieni la chiave privata al sicuro.

Un certificato intermedio è anche richiesto per essere nel tuo portachiavi per assicurare che il tuo certificato di sviluppatore o di distribuzione sia rilasciato da un’altra autorità di certificazione. So che sembra un po’ confuso, ma è così che funziona. Viene installato automaticamente quando si imposta Xcode la prima volta, quindi fondamentalmente non c’è bisogno di preoccuparsene molto perché è configurato automaticamente.

Provisioning Profile & App ID

Come sappiamo, ad Apple piace mantenere le cose sicure, quindi non è possibile installare un’App su qualsiasi dispositivo iOS là fuori usando solo il certificato. È qui che entrano in gioco i Provisioning Profiles. Un Provisioning Profile deve essere installato su ogni dispositivo su cui il codice dell’applicazione deve essere eseguito. Ogni profilo di provisioning di sviluppo conterrà un set di certificati di sviluppo iPhone, identificatori unici di dispositivi e un App ID. Un App ID è una stringa in due parti usata per identificare una o più applicazioni da un singolo team di sviluppo.

I dispositivi specificati nel Development Provisioning Profile possono essere usati per i test solo da quegli individui i cui Development Certificates sono inclusi nel profilo. Un singolo dispositivo può contenere più profili di approvvigionamento. La differenza tra i profili di sviluppo e di distribuzione è che i profili di distribuzione non specificano alcun ID dispositivo. Se vuoi rilasciare un’applicazione che deve essere limitata a un certo numero di dispositivi registrati, devi usare un profilo Ad-Hoc per questo.

Cartina

Qui c’è la tabella che ho preparato. Se scoprite delle cose che mi sono sfuggite o che ho spiegato nel modo sbagliato, fatemelo sapere. Come è stato detto, questa è la prima volta che ho davvero cercato di avvolgere la mia testa intorno alle viscere del Provisioning e del Code Signing. So che c’è molto di più di cui parlare, ma penso che questo sia un buon inizio per tutto ciò che riguarda questo argomento. Cercherò di mantenere questo post aggiornato e di correggere tutto ciò che è sbagliato il più velocemente possibile.

  1. Xcode verrà installato e il certificato intermedio verrà spinto nel portachiavi
  2. Verrà creata la Certificate Signing Request (CSR).
  3. La chiave privata sarà generata durante la creazione del CSR e memorizzata nel Portachiavi
  4. Il CSR sarà caricato nel Member Center
  5. Apple proverà il tutto ed emetterà il certificato
  6. Il certificato sarà scaricato sul tuo computer
  7. Il certificato sarà spinto nel Portachiavi e abbinato alla chiave privata per formare il Code Signing Identity
  8. Il Provisioning Profile sarà creato usando un certificato, App ID e Device Identifiers e scaricato da Xcode
  9. Xcode firmerà l’App e spingerà i Provisioning Profiles sul dispositivo
  10. iOS proverà se tutto è configurato correttamente.Ciò significa che il Provisioning Profile dovrebbe includere il certificato che hai usato per firmare l’App, l’UDID del tuo dispositivo e l’App ID corretto.
  11. La tua App dovrebbe essere in esecuzione ora!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.