2013-07-05 4 views
28

Sto usando un keystore (.jks) per memorizzare il certificato che uso per firmare le mie applicazioni Android. La documentazione e la community di Android mi hanno impressionato dell'importanza di mai perdere questo file, ma non ho trovato alcuna indicazione su dove dovrei tenerlo.C'è qualche ragione per cui non dovrei memorizzare il mio keystore nel controllo di versione?

Conservarlo in Git sarebbe una pessima idea (cioè avrebbe conseguenze di sicurezza)?

Si supponga che il keystore stesso e le chiavi private all'interno di entrambi siano dotati di password complesse.

+2

offtopic come l'inferno ... copia la chiave su alcune schede SD/floppy disk/dischi rigidi e metti in cassaforte – Selvin

+28

Come una domanda specifica pertinente solo agli sviluppatori di software, e una con conseguenze potenzialmente gravi, questo sembra interamente in argomento . –

+1

Sono (ovviamente) non completamente familiare con i keystore o per cosa li usi, ma i miei unici incontri con loro sono la programmazione (usarli non è facoltativo se vuoi creare un'app per Android). A meno che non abbiano altri casi d'uso, direi che rientrano in "strumenti utilizzati principalmente per la programmazione". – ZoFreX

risposta

12

Chiunque abbia accesso in lettura al repository Git riceverà la chiave privata. Questo è considerato un problema di sicurezza e per questo motivo non è raccomandato. Se il tuo repository GIT è completamente privato, significa che nessuno ha accesso ad esso (NON un repository privato su GitHub, ma piuttosto un repository su disco locale o nell'infrastruttura che controlli al 100%) quindi inserendo la tua chiave privata c'è sicuro come tenerlo sul disco locale.

Si supponga che il keystore stesso e le chiavi private all'interno entrambi hanno forti password su di loro

Si noti che la password è la tua ultima modo di difesa in caso di vostra chiave ("pubblico") private. Se sarà compromesso in qualsiasi modo (azzeccato, rubato, incrinato), allora è finita.

Inoltre, sono più che certo che non tutti (se necessario) degli sviluppatori devono accedere alle chiavi di rilascio . Se hai bisogno di loro per averlo, consegnalo dal repository. Ma prima ripenserei alla politica di sicurezza.

+1

Stupidamente non ho specificato che avrei ancora messo una password sulla chiave privata, ho modificato la domanda per riflettere ora :) – ZoFreX

+3

@ZoFreX - perché dipendere dalla password per proteggere la chiave? Probabilmente è molto più facile da indovinare rispetto alla chiave stessa. E ** chiunque abbia accesso al tuo repository e un file binario firmato da te può avere tentativi infiniti di indovinarlo **, con una raccolta di istanze AWS altrettanto veloce quanto gli interessa acquistare. Anche se il tuo repository è privato oggi, a un certo punto potresti condividerlo o archiviarlo fuori sede e dimenticarti di questo rischio. –

+0

Chiunque abbia accesso ad un file binario firmato da me può avere tentativi infiniti di indovinare la chiave stessa, con una raccolta di istanze AWS altrettanto veloce quanto gli interessa acquistare. – ZoFreX

1

Per aggiornare la vostra applicazione avete bisogno di due cose:

  • L'accesso al Google Play Console per gli sviluppatori che possiede l'applicazione.
  • un APK firmato con la corretta chiavi

Mettendo il certificato nel repository e condividere con i tuoi sviluppatori si stanno dando da token di titolo.

Se il tuo account Google Play Dev Console è sicuro, dovresti stare bene. Ma dipende dal tuo szenario.

Mettere nel repository è molto più facile:

  • Il repository viene clonato in molti posti e di solito eseguito il backup in modo corretto.
  • Il team di sviluppatori può utilizzare gradle per firmare automaticamente la versione di produzione.

Molte persone preferiscono metterlo su una o più schede SD e metterlo da qualche parte. Ma la maggior parte delle persone non ha un posto chiamato "da qualche parte" nel loro ufficio. Può ancora essere letto tra qualche anno? più

Due considerazione:

  1. Se il proprietario del prodotto dei cambiamenti app Android nella vostra azienda non si sa mai se il vecchio proprietario ha ancora una copia e nessuno sa chi ha accesso ad esso già. Non puoi cambiare la chiave.Quindi se una volta la chiave viene passata da una persona a un'altra, deve essere considerata insicura.

  2. Naturalmente, è possibile mantenerlo completamente privato. È protetto dalla tua password che nessuno conosce. Ma cosa succede se muori? Qualcuno potrebbe voler aggiornare la tua app. Non è possibile. Una chiave privata che viene mantenuta privata viene persa quando muori.

Quindi penso che metterlo nel repository va bene. Abbi cura di proteggere il tuo account Google. Per questo account la password può essere cambiata, due-faktor può essere attivato e così via.