Usare la funzionalità di firma dell'app di Google Play

Con la funzionalità di firma dell'app di Google Play, Google gestisce e protegge automaticamente la chiave di firma della tua app e la utilizza per firmare gli APK da distribuire. Si tratta di un metodo sicuro di archiviazione della chiave di firma dell'app che ti protegge in caso di perdita o compromissione della chiave.

Importante: per usare Android App Bundle, ossia il formato consigliato per la pubblicazione di app, devi registrarti alla funzionalità di firma dell'app di Google Play prima di caricare l'app bundle su Play Console.

Per attivare la funzionalità, devi essere proprietario dell'account o un utente con autorizzazioni globali "Gestione delle release di produzione" e devi accettare i Termini di servizio. Puoi registrare una sola app alla volta alla funzionalità di firma dell'app di Google Play.

Come funziona

Se utilizzi la funzionalità di firma dell'app di Google Play, le tue chiavi vengono memorizzate nella stessa infrastruttura su cui Google memorizza le proprie chiavi. Le chiavi sono protette dal sistema Key Management Service di Google. Per ulteriori informazioni sull'infrastruttura tecnica di Google, leggi i white paper sulla sicurezza di Google Cloud.

Le app Android vengono firmate con una chiave privata. Per garantire l'attendibilità degli aggiornamenti delle app, a ogni chiave privata è associato un certificato pubblico che viene usato da dispositivi e servizi per verificare che l'app derivi da una fonte attendibile. I dispositivi accettano gli aggiornamenti soltanto se la relativa firma corrisponde alla firma dell'app installata. Se consenti a Google di gestire la chiave di firma della tua app, questo processo diventa più sicuro.

Nota: l'uso della funzionalità di firma dell'app di Google Play è facoltativo. Puoi comunque caricare un APK e gestire le tue chiavi senza usare un app bundle. Se però perdi il tuo archivio chiavi o se l'archivio viene compromesso, non potrai aggiornare la tua app; dovrai pubblicare una nuova app con un nuovo nome di pacchetto.

Descrizioni di chiavi, elementi e strumenti
Termine Descrizione
Chiave di firma dell'app

La chiave utilizzata da Google Play per firmare gli APK da destinare al dispositivo di un utente. Se attivi la funzionalità di firma dell'app di Google Play, puoi caricare una chiave di firma dell'app esistente o farne generare una a Google.

La chiave di firma dell'app non può essere mai modificata per tutta la durata della tua app. È consigliabile tenere segreta la chiave di firma dell'app, ma puoi condividere il certificato pubblico dell'app.

Chiave di caricamento

La chiave che usi per firmare l'app bundle o l'APK prima di caricarli su Google Play. È consigliabile tenere segreta la chiave di caricamento, ma puoi condividere il certificato pubblico dell'app. Per motivi di sicurezza, è opportuno usare chiavi di firma e di caricamento dell'app diverse.

Esistono due modi per generare una chiave di caricamento:

  • Usa la chiave di firma dell'app. Se al momento dell'attivazione della funzionalità di firma dell'app decidi che sia Google a generare una chiave di firma dell'app, la chiave usata per la prima release corrisponde anche alla chiave di caricamento.
  • Usa una chiave di caricamento separata. Se al momento dell'attivazione della funzionalità di firma dell'app fornisci la tua chiave di firma dell'app, hai la possibilità di generare una nuova chiave di caricamento per maggiore sicurezza. Se non ne generi una, usa la chiave di firma dell'app come chiave di caricamento per firmare le release.
Certificato (.der o .pem)

Un certificato contiene una chiave pubblica e alcune informazioni aggiuntive che identificano il proprietario della chiave. Il certificato di chiave pubblica consente a chiunque di verificare chi ha firmato l'app bundle o l'APK e puoi condividerlo con tutti perché non contiene la tua chiave privata.

Per registrare le tue chiavi con fornitori di API, puoi scaricare il certificato pubblico per la chiave di firma dell'app e la chiave di caricamento dalla pagina Firma dell'app di Play Console. Il certificato di chiave pubblica può essere condiviso con tutti perché non contiene la tua chiave privata.

Impronta digitale certificato

Una rappresentazione breve e univoca di un certificato che viene spesso richiesta dai fornitori di API insieme al nome del pacchetto per registrare un'app allo scopo di utilizzare il loro servizio.

Le impronte MD5, SHA-1 e SHA-256 dei certificati di firma dell'app e di caricamento sono disponibili nella pagina Firma dell'app di Play Console. È possibile elaborare altre impronte scaricando il certificato originale (.der) dalla stessa pagina.

Archivio chiavi Java (.jks o .keystore) Un repository di certificati di sicurezza e chiavi private.
Strumento Play Encrypt Private Key (PEPK)

Uno strumento per esportare chiavi private da un archivio chiavi Java e criptarle per il trasferimento su Google Play.

Quando fornisci la chiave di firma dell'app da far usare a Google, seleziona l'opzione di esportazione e caricamento della chiave (e, se necessario, del relativo certificato) e segui le istruzioni per scaricare e usare lo strumento. Se preferisci, puoi scaricare, esaminare e usare il codice open source dello strumento PEPK.

Procedura di firma dell'app

Puoi caricare gli APK firmati con la chiave di firma dell'app originale prima o dopo l'attivazione della funzionalità di firma dell'app di Google Play.

Se stai iniziando a usare gli Android App Bundle, puoi testarli con i gruppi di test mentre usi l'APK esistente nel gruppo di produzione. Ecco come funziona la procedura:

  1. Firma il tuo app bundle o APK e caricalo su Play Console.
  2. A seconda dell'elemento caricato, ci sono le seguenti differenze nella procedura di firma:
    • App bundle: Google genera APK ottimizzati dall'app bundle e li firma con la chiave di firma dell'app.
    • APK firmato con chiave di caricamento: Google verifica e toglie la firma dall'APK, quindi firma nuovamente l'APK con la chiave di firma dell'app.
    • APK firmato con chiave di firma dell'app: Google verifica la firma.
  3. Google mette a disposizione degli utenti gli APK firmati.

Attivare la funzionalità di firma dell'app di Google Play

Nuove app

Passaggio 1: crea una chiave di caricamento

  1. Segui le istruzioni per creare una chiave di caricamento.
  2. Firma il nuovo APK con la chiave di caricamento.

Passaggio 2: prepara la release

  1. Segui le istruzioni per preparare e implementare la release.
  2. Dopo aver selezionato un gruppo release, configura la firma dell'app nella sezione "Consenti a Google di gestire e proteggere la tua chiave di firma dell'app".
  3. Seleziona Continua se vuoi usare la chiave generata come chiave di caricamento per firmare le future release oppure seleziona Opzioni avanzate, che includono:
    • Uso della stessa chiave di un'altra app nel tuo account sviluppatore (Opzione 2).
    • Caricamento di una chiave di firma dell'app esistente (Opzione 2, 3 e 4). Scegli l'opzione di esportazione e caricamento più adatta. Dopo aver caricato la chiave di firma dell'app e il relativo certificato pubblico, puoi creare una chiave di caricamento o continuare a usare la chiave di firma dell'app come chiave di caricamento.

Nota: per continuare devi accettare i Termini di servizio e attivare la funzionalità di firma dell'app.

Passaggio 3: registra la chiave di firma dell'app con fornitori di API

Se usi API nell'app, in genere devi registrare il certificato della chiave usata da Google per firmare l'app ai fini dell'autenticazione usando l'impronta del certificato. Ecco dove trovare il certificato:

  1. Accedi a Play Console.
  2. Seleziona l'app.
  3. Nel menu a sinistra, seleziona Gestione delle release > Firma dell'app.
  4. Copia le impronte (MD5, SHA-1 e SHA-256) del certificato di firma della tua app.
    • Se il fornitore dell'API richiede un tipo diverso di impronta, puoi anche scaricare il certificato originale in formato .der e convertirlo usando gli strumenti di trasformazione richiesti dal fornitore dell'API.
App esistenti

Passaggio 1: registrati alla funzionalità di firma dell'app di Google Play

  1. Accedi a Play Console.
  2. Seleziona l'app.
  3. Nel menu a sinistra, seleziona Gestione delle release > Firma dell'app.
  4. Se non l'hai ancora fatto, leggi i Termini di servizio e seleziona Accetto.

Passaggio 2: invia la chiave originale a Google e crea una chiave di caricamento

  1. Cerca la chiave di firma dell'app originale.
  2. Accedi a Play Console.
  3. Seleziona l'app.
  4. Nel menu a sinistra, seleziona Gestione delle release > Firma dell'app.
  5. Seleziona l'opzione di esportazione e caricamento più adatta al tuo processo di rilascio e carica una chiave di firma dell'app esistente.

Passaggio 3: crea una chiave di caricamento (operazione facoltativa, ma consigliata)

  1. Crea una chiave di caricamento e carica il certificato su Google Play.
    • Puoi anche continuare a usare la chiave di firma dell'app come chiave di caricamento.
  2. Copia le impronte (MD5, SHA-1 e SHA-256) del certificato di firma della tua app.
    • A scopo di test, potresti dover registrare il certificato della chiave di caricamento con i fornitori di API utilizzando l'impronta del certificato e la chiave di firma dell'app.

Passaggio 4: firma il prossimo aggiornamento dell'app con la chiave di caricamento

Quando rilasci aggiornamenti della tua app, devi firmarli con la chiave di caricamento.

  • Se non hai generato una nuova chiave di caricamento, continua a usare la chiave di firma dell'app originale per firmare le release prima di caricarle su Google Play. Se perdi la chiave di firma dell'app, puoi generare una nuova chiave di caricamento e registrarla su Google per continuare ad aggiornare la tua app.
  • Se hai generato una nuova chiave di caricamento, usa la nuova chiave di caricamento per firmare le release prima di caricarle su Google Play. Dopo il caricamento, Google cerca una chiave di caricamento delle release per verificare la tua identità. Se perdi la chiave di caricamento, puoi contattare l'assistenza per reimpostarla.

Creare una chiave di caricamento e aggiornare gli archivi chiavi

Per maggiore sicurezza, ti consigliamo di firmare la tua app con una nuova chiave di caricamento anziché con la chiave di firma dell'app.

Puoi creare una chiave di caricamento quando attivi la funzionalità di firma dell'app di Google Play oppure in un secondo momento da Gestione delle release > Firma dell'app.

Ecco come creare una chiave di caricamento:

  1. Segui le istruzioni sul sito Android Developers. Archivia la chiave in un posto sicuro.
  2. Esporta il certificato della chiave di caricamento in formato PEM. Sostituisci i seguenti argomenti sottolineati:
    • $ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
  3. Quando richiesto durante la procedura di rilascio, carica il certificato per registrarlo su Google.

Se usi una chiave di caricamento:

  • La chiave di caricamento viene registrata su Google soltanto per autenticare l'identità dell'autore dell'app.
  • La tua firma viene rimossa da tutti gli APK caricati prima che questi diventino disponibili per gli utenti.
Limitazioni relative alla chiave di caricamento
  • Deve essere una chiave RSA di almeno 2048 bit.
  • Le chiavi DSA, EC e RSA di meno di 2048 bit non sono supportate.
Aggiornare gli archivi chiavi

Dopo aver creato una chiave di caricamento, potresti controllare e aggiornare le seguenti posizioni:

  • Computer locali
  • Server sicuro in loco (vari ACL)
  • Computer cloud (vari ACL)
  • Servizi di gestione dei secret dedicati
  • Repository (Git)

Eseguire l'upgrade della chiave di firma dell'app per le nuove installazioni

In alcuni casi, puoi richiedere un upgrade della chiave di firma dell'app. La nuova chiave viene utilizzata per firmare le nuove installazioni e gli aggiornamenti dell'app. La chiave di firma dell'app precedente continua a essere usata per firmare gli aggiornamenti per gli utenti che hanno installato l'app prima dell'upgrade della chiave.

È possibile eseguire un solo upgrade della chiave di firma dell'app per tutto il ciclo di vita di ogni app. Nell'improbabile caso che tu abbia più app che usano la stessa chiave di firma per l'esecuzione nello stesso processo, non potrai eseguire l'upgrade della chiave per tali app.

Di seguito sono riportati un paio di motivi per richiedere un upgrade della chiave di firma dell'app:

  • È necessaria una chiave crittografica più efficace.
  • La chiave di firma dell'app è stata compromessa.

Nota: la richiesta di un upgrade della chiave di firma dell'app in Play Console non è correlata alla rotazione della chiave introdotta nello schema di firma dell'APK v3 per Android P e versioni successive. Questo tipo di rotazione della chiave non è attualmente supportato da Google Play.

Considerazioni importanti da leggere prima di richiedere un upgrade della chiave

Prima di richiedere un upgrade della chiave, è importante comprendere le modifiche che potresti dover apportare dopo il completamento dell'upgrade.

  • Se utilizzi la stessa chiave di firma dell'app per più app per condividere codice/dati tra le app, dovrai aggiornare le tue app affinché riconoscano i certificati della chiave di firma dell'app nuova e precedente.
  • Se la tua app usa le API, prima di pubblicare un aggiornamento dell'app devi registrare i certificati per la chiave di firma dell'app nuova e precedente con i fornitori di API per assicurarti che le API continuino a funzionare. I certificati sono disponibili nella pagina Firma dell'app di Play Console.  
  • Se molti dei tuoi utenti installano aggiornamenti tramite la condivisione peer-to-peer, potranno installare solo gli aggiornamenti firmati con la stessa chiave con cui è stata firmata la versione dell'app già installata. Se non riescono ad aggiornare l'app perché hanno una versione firmata con una chiave diversa, hanno la possibilità di disinstallare e reinstallare l'app per ricevere l'aggiornamento.
Richiedere un upgrade della chiave per le nuove installazioni
  1. Accedi a Play Console.
  2. Seleziona l'app.
  3. Nel menu a sinistra, seleziona Gestione delle release > Firma dell'app.
  4. Nella scheda "Esegui l'upgrade della chiave di firma dell'app per le nuove installazioni", seleziona Richiedi l'upgrade della chiave.
  5. Seleziona un'opzione.
    • A seconda dell'opzione selezionata, potrebbe essere necessario contattare l'assistenza per completare la richiesta.
  6. Fai generare a Google una nuova chiave di firma dell'app (opzione consigliata) oppure carica una chiave.
    • Dopo avere eseguito l'upgrade della chiave di firma dell'app, se usavi la stessa chiave per la chiave di firma e la chiave di caricamento dell'app, puoi continuare a usare la chiave di firma dell'app precedente come chiave di caricamento oppure generare una nuova chiave di caricamento.

Best practice

  • Se distribuisci la tua app al di fuori di Google Play o prevedi di farlo in futuro, puoi generare la chiave di firma dell'app che vuoi usare per ogni store, quindi caricarla su Google quando attivi la funzionalità di firma dell'app di Google Play.
  • Per proteggere il tuo account, attiva la verifica in due passaggi per gli account che hanno accesso alla tua Play Console.
  • Dopo aver pubblicato un app bundle per un gruppo di test o di produzione, puoi visitare Explorer per App Bundle per scaricare un archivio ZIP con tutti gli APK per un dispositivo specifico. Questi APK sono firmati con la chiave di firma dell'app e puoi installarli nell'archivio ZIP su un dispositivo utilizzando l'utility della riga di comando bundletool.
  • Per maggiore sicurezza, genera una nuova chiave di caricamento diversa dalla chiave di firma dell'app.
  • Se vuoi testare l'APK firmato con la chiave di caricamento, devi registrare la tua chiave di caricamento per ogni servizio o API che utilizza la firma della tua app per l'autenticazione, ad esempio l'API di Google Maps o l'SDK Facebook.
  • Se utilizzi un'API di Google puoi registrare il certificato di caricamento nella Google Cloud Console per la tua app.

Chiave di caricamento persa o compromessa

Se hai perso la chiave di caricamento privata o la chiave è stata compromessa, puoi crearne una nuova e chiedere al proprietario dell'account di contattare l'assistenza per reimpostare la chiave. Assicurati che il proprietario dell'account alleghi il file upload_certificate.pem quando contatta l'assistenza.

Dopo che il nostro team di assistenza avrà registrato la nuova chiave di caricamento, riceverai un'email. Dopodiché potrai aggiornare gli archivi chiavi e registrare la chiave con fornitori di API.

Importante: la reimpostazione della chiave di caricamento non influisce sulla chiave di firma dell'app usata da Google Play per firmare di nuovo gli APK prima di metterli a disposizione degli utenti.

È stato utile?
Come possiamo migliorare l'articolo?