Utilizzare la firma dell'app di Google Play

Con la firma dell'app di Google Play, Google gestisce e protegge automaticamente la chiave di firma della tua app e la utilizza per firmare APK di distribuzione ottimizzati generati dagli app bundle. La firma dell'app di Google Play archivia la chiave di firma dell'app nell'infrastruttura sicura di Google e offre opzioni di upgrade per migliorare la sicurezza.

Per utilizzare la firma dell'app di Google Play, devi essere il proprietario dell'account o un utente con l'autorizzazione Rilascio per il gruppo di produzione, esclusione di dispositivi e uso della funzionalità firma dell'app di Google Play e devi accettare i Termini di servizio della firma dell'app di Google Play.

Come funziona

Se utilizzi la firma dell'app di Google Play, le tue chiavi vengono archiviate nella stessa infrastruttura sicura su cui Google archivia le proprie. Le chiavi sono protette dal sistema Key Management Service di Google. Per scoprire di più sull'infrastruttura di Google, leggi il 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'aggiornamento dell'app provenga dalla stessa fonte. 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 dell'app, questo processo diventa più sicuro.

Nota: per le app create prima di agosto 2021, puoi comunque caricare un APK e gestire le tue chiavi invece di usare la firma dell'app di Google Play e un Android App Bundle per la pubblicazione. 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. Per queste app, Google Play consiglia di utilizzare la firma dell'app di Google Play e di passare agli app bundle.

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 usi la firma dell'app di Google Play, puoi caricare una chiave di firma dell'app esistente o farne generare una a Google.

È 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 prima di caricarlo 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 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 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)

Il 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 i provider 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 Google Play (Release > Configurazione > Firma dell'app) in Play Console. Il certificato di chiave pubblica può essere condiviso con chiunque. Non contiene la tua chiave privata.

Fingerprint del certificato

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

Le fingerprint MD5, SHA-1 e SHA-256 dei certificati di firma dell'app e di caricamento sono disponibili nella pagina Firma dell'app di Google Play (Release > Configurazione > Firma dell'app) in Play Console. È possibile elaborare altre fingerprint 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

Ecco come funziona la procedura:

  1. Firma l'app bundle e caricalo su Play Console.
  2. Google genera APK ottimizzati dall'app bundle e li firma con la chiave di firma dell'app.
  3. Google utilizza apksigner per aggiungere due bollini al file manifest dell'app (com.android.stamp.source e com.android.stamp.type), quindi firma gli APK con la chiave di firma dell'app. I bollini aggiunti dallo strumento apksigner consentono di far risalire gli APK a chi li firma.
  4. Google mette a disposizione degli utenti gli APK firmati.

Configurare e gestire la firma dell'app di Google Play

Se la tua app non usa ancora la firma dell'app di Google Play, segui le istruzioni riportate di seguito.

Passaggio 1: crea una chiave di caricamento

  1. Segui queste istruzioni per creare una chiave di caricamento.
  2. Firma l'app bundle 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 canale di release, nella sezione "Integrità dell'app" viene mostrato lo stato della firma dell'app di Google Play per la tua app.
  3. Per procedere con una chiave di firma dell'app generata da Google, carica l'app bundle. In alternativa, puoi selezionare Cambia la chiave di firma dell'app per accedere alle seguenti opzioni:
    • Usa una chiave di firma dell'app generata da Google: oltre il 90% delle nuove app utilizza chiavi di firma dell'app generate da Google. L'utilizzo di una chiave generata da Google protegge da perdita o compromissione (la chiave non può essere scaricata). Se scegli questa opzione, puoi scaricare gli APK di distribuzione dallo strumento Explorer per app bundle firmato con la chiave generata da Google per altri canali di distribuzione oppure utilizzare una chiave diversa per questi canali.
    • Usa una chiave di firma dell'app diversa: se scegli la chiave di firma dell'app puoi usare la stessa chiave di un'altra app nell'account sviluppatore o conservare una copia locale della chiave di firma dell'app per una maggiore flessibilità. Ad esempio, potresti aver già deciso una chiave perché la tua app è preinstallata su alcuni dispositivi. Avere una copia della tua chiave all'esterno dei server di Google aumenta il rischio se la copia locale viene compromessa. Per utilizzare una chiave diversa hai le seguenti opzioni:
  4. Segui le istruzioni rimanenti per preparare e implementare la release.

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

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

Se usi delle API nell'app, in genere devi registrare la chiave di firma dell'app ai fini dell'autenticazione usando la fingerprint del certificato. Ecco dove trovare il certificato:

  1. Apri Play Console e vai alla pagina Firma dell'app di Google Play (Release > Configurazione > Firma dell'app).
    • Suggerimento: puoi accedere a questa pagina anche tramite la pagina Integrità dell'app (Release > Integrità dell'app), che contiene servizi per l'integrità e la firma che ti aiutano ad assicurarti che gli utenti possano usare le tue app e i tuoi giochi come previsto.
  2. Scorri fino alla sezione "Certificato della chiave di firma dell'app" e copia le fingerprint (MD5, SHA-1 e SHA-256) del certificato di firma della tua app.
    • Se il provider di API richiede un tipo diverso di fingerprint, puoi anche scaricare il certificato originale in formato .der e convertirlo usando gli strumenti di trasformazione richiesti dal provider dell'API.
Requisiti della chiave di firma dell'app

Quando utilizzi una chiave generata da Google, Google genera automaticamente una chiave RSA con una crittografia efficace da 4096 bit. Se scegli di caricare una chiave di firma dell'app personalizzata, questa deve essere una chiave RSA da almeno 2048 bit.

Istruzioni per le app create prima di agosto 2021

Passaggio 1: configura la firma dell'app di Google Play

  1. Apri Play Console e vai alla pagina Firma dell'app di Google Play (Release > Configurazione > Firma dell'app).
    • Suggerimento: puoi accedere a questa pagina anche tramite la pagina Integrità dell'app (Release > Integrità dell'app), che contiene servizi per l'integrità e la firma che ti aiutano ad assicurarti che gli utenti possano usare le tue app e i tuoi giochi come previsto.
  2. Se non l'hai ancora fatto, leggi i Termini di servizio della funzionalità di firma dell'app di Google Play e seleziona Accetto.

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

  1. Cerca la chiave di firma dell'app originale.
  2. Apri Play Console e vai alla pagina Firma dell'app di Google Play (Release > Configurazione > Firma dell'app).
  3. Seleziona l'opzione di esportazione e caricamento più adatta al tuo processo di rilascio e carica una chiave di firma dell'app esistente.

(Facoltativo, ma consigliato) Passaggio 3: crea una chiave di caricamento

  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 fingerprint (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 provider di API utilizzando la fingerprint del certificato e la chiave di firma dell'app.

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

Quando rilasci degli aggiornamenti dell'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 gli app bundle prima di caricarli su Google Play. Se perdi la chiave originale 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, usala per firmare gli app bundle prima di caricarli su Google Play. Google utilizza la chiave di caricamento per verificare la tua identità. Se perdi la chiave di caricamento, puoi contattare l'assistenza per reimpostarla.
Eseguire l'upgrade della chiave di firma dell'app per registrarsi alla firma dell'app di Google Play

Potrebbe essere utile se non sei in grado di condividere la chiave esistente. Prima di scegliere di eseguire l'upgrade della chiave di firma dell'app per la registrazione, tieni presente che:

  • Questa opzione richiede una doppia release.
  • Dovrai caricare un app bundle e un APK firmato con la chiave precedente in ogni release. Google Play userà gli app bundle per generare APK firmati con la nuova chiave per i dispositivi con Android R* (livello API 30) o versioni successive. Gli APK precedenti verranno usati per le release Android precedenti (fino al livello API 29).

* Se la tua app utilizza sharedUserId, ti consigliamo di applicare l'upgrade della chiave per le installazioni e gli aggiornamenti sui dispositivi con Android T (livello API 33) o versioni successive. Per configurare questi parametri, imposta una versione minima dell'SDK precisa nella configurazione del bundle.

Passaggio 1: carica la nuova chiave, genera e carica una prova di rotazione

Affinché la nuova chiave sia considerata attendibile sui dispositivi Android, devi caricare una nuova chiave di firma da un repository e generare e caricare una prova di rotazione:

  1. Apri Play Console e vai alla pagina Firma dell'app di Google Play (Release > Configurazione > Firma dell'app).
    • Suggerimento: puoi accedere a questa pagina anche tramite la pagina Integrità dell'app (Release > Integrità dell'app), che contiene servizi per l'integrità e la firma che ti aiutano ad assicurarti che gli utenti possano usare le tue app e i tuoi giochi come previsto.
  2. Seleziona la scheda Firma dell'app.
  3. Fai clic su Mostra opzioni avanzate e seleziona Usa una nuova chiave di firma dell'app (sono richieste due release continuative).
  4. Scegli di utilizzare la stessa chiave di firma dell'app di un'altra app nel tuo account sviluppatore oppure di caricarne una nuova da Android Studio, dall'archivio chiavi Java o da un altro repository.
  5. Segui le istruzioni sullo schermo, scarica ed esegui lo strumento PEPK.
  6. Quando il file ZIP è pronto, fai clic su Carica file ZIP generato e caricalo su Play Console.
  7. Accanto a "5. Carica la prova di rotazione per consentire di ritenere attendibile la nuova chiave sui dispositivi Android", fai clic su Mostra istruzioni.
  8. Scarica APKSigner e genera una prova di rotazione eseguendo questo comando:
    • $ apksigner rotate --out /path/to/new/file --old-signer --ks old-signer-jks --set-rollback true --new-signer --ks new-signer-jks --set-rollback true
  9. Fai clic su Carica il file della prova di rotazione generata e carica la prova di rotazione generata nel passaggio 8.
  10. Fai clic su Salva.

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. In alternativa, puoi creare una chiave di caricamento in un secondo momento dalla pagina Firma dell'app di Google Play (Release > Configurazione > Firma dell'app).

Ecco come creare una chiave di caricamento:

  1. Segui le istruzioni sul sito Android for 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 vengano inviati agli utenti.
Requisiti della chiave di caricamento
  • Deve essere una chiave RSA di almeno 2048 bit.
Aggiornare gli archivi chiavi

Dopo aver creato una chiave di caricamento, è opportuno 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

Questa sezione contiene istruzioni relative all'upgrade della chiave di firma dell'app. Se hai perso la chiave di caricamento, non è necessario richiedere un upgrade. Consulta invece la sezione Chiave di caricamento persa o compromessa alla fine di questa pagina.

In alcuni casi, puoi richiedere un upgrade della chiave di firma dell'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.

Importante: gli upgrade della chiave sono supportati solo per le app che utilizzano app bundle.

Prima di richiedere un upgrade della chiave in Play Console, consulta la sezione Considerazioni importanti da leggere prima di richiedere un upgrade della chiave di seguito. Successivamente espandi le altre sezioni di seguito per scoprire di più su come richiedere un upgrade della chiave.

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 queste, devi aggiornare le tue app affinché riconoscano i certificati della chiave di firma dell'app nuova e precedente. Sui dispositivi con Android S (livello API 32) o versioni precedenti, la piattaforma Android riconosce solo il certificato della chiave di firma dell'app precedente ai fini della condivisione del codice/dati.
  • Se la tua app usa le API, assicurati di registrare i certificati per la nuova e la precedente chiave di firma dell'app con i provider di API per far sì che le API continuino a funzionare. I certificati sono disponibili nella pagina Firma dell'app di Google Play (Release > Configurazione > Firma dell'app) in Play Console.  
  • Se alcuni dei tuoi utenti installano gli 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, possono disinstallare e reinstallare l'app per ricevere l'aggiornamento.
Richiedere un upgrade della chiave per tutte le installazioni su Android N (livello API 24) e versioni successive

Per ogni app è possibile eseguire un solo upgrade all'anno della chiave di firma dell'app per tutte le installazioni su Android N (livello API 24) e versioni successive.

Se soddisfi i requisiti per richiedere l'upgrade, la nuova chiave viene utilizzata per firmare tutte le installazioni e tutti gli aggiornamenti dell'app. Sui dispositivi con Android T (livello API 33) e versioni successive, la piattaforma Android impone l'utilizzo della chiave di cui è stato eseguito l'upgrade. Sui dispositivi con Android S (livello API 32) o versioni precedenti, la piattaforma Android non impone l'utilizzo della chiave di cui è stato eseguito l'upgrade e riconosce comunque la chiave di firma precedente come chiave di firma dell'app. Sono incluse anche eventuali funzionalità della piattaforma Android (ad esempio la condivisione delle autorizzazioni personalizzate) che si basano sulla chiave di firma dell'app. Sui dispositivi con versioni comprese tra Android N (livello API 24) e Android S (livello API 32), Google Play Protect controllerà che gli aggiornamenti dell'app siano firmati con la chiave di cui è stato eseguito l'upgrade, a meno che non siano stati disattivati dall'utente. Questa operazione fornisce un'ulteriore convalida poiché la piattaforma Android non impone l'utilizzo della chiave di cui è stato eseguito l'upgrade sui dispositivi con Android S (livello API 32) o versioni precedenti.

  1. Apri Play Console e vai alla pagina Firma dell'app di Google Play (Release > Configurazione > Firma dell'app).
    • Suggerimento: puoi accedere a questa pagina anche tramite la pagina Integrità dell'app (Release > Integrità dell'app), che contiene servizi per l'integrità e la firma che ti aiutano ad assicurarti che gli utenti possano usare le tue app e i tuoi giochi come previsto.
  2. Nella scheda "Esegui l'upgrade della chiave di firma dell'app", seleziona Richiedi l'upgrade della chiave.
  3. Seleziona un'opzione per eseguire l'upgrade della chiave di firma dell'app per tutte le installazioni su Android N e versioni successive.
  4. 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 firma e il caricamento dell'app, puoi continuare a usare la chiave di firma dell'app precedente per il caricamento oppure generare una nuova chiave di caricamento.
  5. Seleziona un motivo per richiedere l'upgrade della chiave di firma dell'app.
  6. Se necessario, registra la nuova chiave di firma dell'app con i provider API.

Suggerimento: se distribuisci la tua app su più canali di distribuzione e vuoi massimizzare la compatibilità degli aggiornamenti dell'app per i tuoi utenti, devi eseguire l'upgrade della chiave in ogni canale di distribuzione. Per garantire la compatibilità con l'upgrade della chiave di Google Play, usa lo strumento ApkSigner, integrato in Android Build Build Tools (revisione 33.0.1 e versioni successive):

$ apksigner sign --in ${INPUT_APK}

--out ${OUTPUT_APK}

--ks ${ORIGINAL_KEYSTORE}

--ks-key-alias ${ORIGINAL_KEY_ALIAS}

--next-signer --ks ${UPGRADED_KEYSTORE}

--ks-key-alias ${UPGRADED_KEY_ALIAS}

--lineage ${LINEAGE}

 Scopri di più su come funzionano gli aggiornamenti delle app.

Best practice

  • Se distribuisci la tua app al di fuori di Google Play o prevedi di farlo in futuro e vuoi utilizzare la stessa chiave di firma, hai due opzioni: 
    • Puoi consentire a Google di generare la chiave (opzione consigliata) e poi scaricare dallo strumento Explorer per App Bundle un APK universale firmato da distribuire all'esterno di Google Play.
    • Oppure, puoi generare la chiave di firma dell'app che vuoi utilizzare per ogni store e poi trasferirne una copia a Google quando configuri la firma dell'app di Google Play.
  • Per proteggere il tuo account, attiva la verifica in due passaggi per gli account che hanno accesso a Play Console.
  • Dopo aver pubblicato un app bundle per un canale di release, visita la pagina Explorer per app bundle per accedere agli APK installabili che Google genera dall'app bundle. Puoi:
    • Copiare e condividere un link di condivisione interna delle app che ti consente di testare, con un solo tocco, quali contenuti installerebbe Google Play dal tuo app bundle su dispositivi diversi.
    • Scaricare un APK universale firmato. Questo singolo APK è firmato con la chiave di firma dell'app in possesso di Google e può essere installato su qualsiasi dispositivo supportato dalla tua app.
    • Scaricare un file ZIP con tutti gli APK per un dispositivo specifico. Questi APK sono firmati con la chiave di firma dell'app in possesso di Google. Puoi installare gli APK nel file ZIP su un dispositivo utilizzando il comando adb install-multiple *.apk.
  • Per maggiore sicurezza, genera una nuova chiave di caricamento diversa dalla chiave di firma dell'app.
  • Se utilizzi un'API di Google, puoi registrare la chiave di caricamento e i certificati delle chiavi di firma dell'app nella console Google Cloud per la tua app.
  • Se utilizzi Link per app Android, assicurati di aggiornare le chiavi nel file JSON Digital Asset Links corrispondente sul tuo sito web.

Chiave di caricamento persa o compromessa

Se hai perso la chiave di caricamento privata o se la chiave è stata compromessa, puoi crearne una nuova. Il proprietario dell'account sviluppatore potrà quindi avviare una reimpostazione della chiave in Play Console.

Dopo che il nostro team di assistenza avrà registrato la nuova chiave di caricamento, il proprietario dell'account e gli amministratori globali riceveranno un messaggio nella posta in arrivo e un'email con ulteriori informazioni. Puoi quindi aggiornare gli archivi chiavi e registrare la chiave con provider di API.

Il proprietario dell'account può anche annullare la richiesta di reimpostazione in Play Console.

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.

Schema di firma dell'APK v4

I dispositivi Android 11 e versioni successive supportano il nuovo schema di firma dell'APK v4. La funzionalità di firma dell'app di Google Play utilizza la firma v4 per le app idonee affinché possano accedere alle funzionalità di distribuzione ottimizzate disponibili sui dispositivi più recenti. La firma v4 non richiede interventi da parte degli sviluppatori e non è previsto alcun impatto sugli utenti.

Contenuti correlati

È stato utile?

Come possiamo migliorare l'articolo?

Hai bisogno di ulteriore assistenza?

Prova i passaggi successivi indicati di seguito:

Ricerca
Cancella ricerca
Chiudi ricerca
App Google
Menu principale