Cos'è il file keystore Android e a cosa serve?


128

Questa è una domanda generale, ma in particolare sono interessato al suo utilizzo per Android. Che cos'è un file keystore ea cosa serve?

Più applicazioni Android possono utilizzare lo stesso keystore per firmare la propria applicazione (che cosa significa esattamente "firmare" un .apk?) E quali sono le implicazioni (se presenti) di questo?


1
Sembra che tu stia fondendo due argomenti. Il primo è il keystore e il secondo è la firma APK. Vedi anche gli interni di sicurezza Android di Nikolay Elenkov : una guida approfondita all'architettura di sicurezza di Android .
JWW

Risposte:


130

La risposta che vorrei fornire è che un file keystore è autenticare te stesso a chiunque lo stia chiedendo. Non è limitato alla sola firma di file .apk, è possibile utilizzarlo per archiviare certificati personali, firmare i dati da trasmettere e un'intera varietà di autenticazioni.

In termini di ciò che fai con esso per Android e probabilmente quello che stai cercando da quando hai menzionato la firma di apk, è il tuo certificato. Stai marchiando la tua applicazione con le tue credenziali. Puoi marcare più applicazioni con la stessa chiave, infatti, si consiglia di utilizzare un certificato per marcare più applicazioni che scrivi. È più facile tenere traccia di quali applicazioni ti appartengono.

Non sono sicuro di cosa intendi per implicazioni. Suppongo significhi che nessuno, tranne il titolare del certificato, può aggiornare l'applicazione. Ciò significa che se lo rilasci in natura, perdi il certificato che hai usato per firmare l'applicazione, quindi non puoi rilasciare gli aggiornamenti, quindi mantienilo sicuro e esegui il backup se necessario.

Ma oltre a firmare gli apk per rilasciarli in libertà, puoi usarlo per autenticare il tuo dispositivo su un server su SSL se lo desideri, (anche relativo ad Android) tra le altre funzioni.


2
Ottima risposta Dovresti anche notare che hai bisogno di un file keystore se intendi utilizzare "push data" nella tua app!
Kaptein Marshall,

La macchina Keystore è specifica? Oppure possiamo usarlo su qualsiasi macchina per aggiornare la nostra app ??
Yawar,

7
Buona spiegazione Puoi anche spiegare perché abbiamo bisogno di KeyStorePassword, Key alias, KeyPassword. Sembra ridondante avere tre chiavi.
ARK,

18

Android Market richiede di firmare tutte le app che pubblichi con un certificato, utilizzando un meccanismo di chiave pubblica / privata (il certificato è firmato con la tua chiave privata). Ciò fornisce un livello di sicurezza che impedisce, tra l'altro, agli autori di attacchi remoti di inviare sul mercato aggiornamenti dannosi all'applicazione (tutti gli aggiornamenti devono essere firmati con la stessa chiave).

Dalla Guida alla firma dell'app del sito dello sviluppatore Android:

In generale, la strategia consigliata per tutti gli sviluppatori è quella di firmare tutte le applicazioni con lo stesso certificato, per tutta la durata prevista delle applicazioni. Ci sono diversi motivi per cui dovresti farlo ...

L'uso della stessa chiave ha alcuni vantaggi: uno è che è più facile condividere i dati tra le applicazioni firmate con la stessa chiave. Un altro è che consente l'esecuzione di più app firmate con la stessa chiave nello stesso processo, in modo che uno sviluppatore possa creare più applicazioni "modulari".


10

Puoi trovare ulteriori informazioni sulla procedura di firma nella documentazione ufficiale di Android qui: http://developer.android.com/guide/publishing/app-signing.html

Sì, puoi firmare più applicazioni con lo stesso keystore. Ma devi ricordare una cosa importante: se pubblichi un'app sul Play Store, devi firmarla con un certificato non di debug. E se un giorno vuoi pubblicare un aggiornamento per questa app, il keystore utilizzato per firmare l'apk deve essere lo stesso. Altrimenti, non sarai in grado di pubblicare il tuo aggiornamento.


No, questo è sbagliato. Il keystore che usi per firmare l'apk potrebbe essere diverso, ma la chiave che usi per firmare l'apk deve essere la stessa. Il file keystore è solo un file utilizzato per archiviare la chiave e le informazioni sul certificato, è possibile avere più entità chiave nello stesso file keystore.
zeleven,

0

L'idea di un keytool è firmare il tuo apk con un identificatore univoco che indichi la fonte di quell'apk. Un file keystore (da quello che ho capito) viene utilizzato per il debug in modo che il tuo apk abbia la funzionalità di un keytool senza firmare l'apk per la produzione. Quindi sì, per scopi di debug dovresti essere in grado di firmare più apk con un singolo keystore. Ma comprendi che, spingendo verso la produzione avrai bisogno di keytools unici come identificatori per ogni apk che crei.


Non è necessario firmare un'app per eseguirne il debug, nell'emulatore o su un dispositivo reale.
Marcus,

Non intendevo dire che DEVI firmarlo per eseguire il debug ... ma puoi usare keystore come implementazione di test del tuo keytool.
Adam Storm,

Non penso keytoolsia quello che vuoi dire. keytool è un programma java utilizzato per generare keystore.
Otra,

Sì, hai ragione, Keytool non è quello che intendo. Immagino che "chiave" sia ciò che intendo. Stavo semplicemente cercando di spiegare al richiedente che puoi avere una chiave apk comune per il debug, ma al momento della pubblicazione, ogni apk dovrà avere chiavi univoche per la modifica e l'aggiornamento.
Adam Storm,

Non hanno bisogno di chiavi univoche però ... puoi firmare più apk con una chiave privata, in realtà è preferibile farlo. Potresti immaginare di tenere traccia di 10 differenti certs / keys per 10 app?
Otra,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.