Dove dovrebbe essere archiviato un keystore (.jks) in un repository

6

Ho una domanda sulla migliore pratica nell'archiviazione di un file di archivio di chiavi ( .jks ) nel controllo del codice sorgente. Questo keystore viene chiamato da un componente Java autonomo che recupera una chiave privata allo scopo di firmare asserzioni SAML.

Per motivi di sicurezza, vorrei astenermi dall'includere questo Keystore nello stesso progetto git del nostro codice Java. Questo codice sorgente è spinto in molte posizioni diverse per vari strumenti utilizzati. (Strumenti di revisione del codice, scanner del codice sorgente) e non credo che nulla di buono possa derivare dal fatto che il nostro archivio di keystore si trova in tutte queste posizioni.

Questo mi lascia con la domanda, dove è il posto migliore per includere questo file nel controllo del codice sorgente? Ho fatto un po 'di ricerche su internet per trovare una buona risposta, quindi ecco i miei pensieri.

Pianifica A

Ho intenzione di posizionare il file Keystore in un repository privato bloccato. Questo è accessibile solo a un pubblico molto limitato. Il keystore verrà aggiunto al componente autonomo su build come dipendenza dal processo di distribuzione.

- Professionisti

  • Il keystore non verrebbe distribuito con il nostro codice sorgente
  • Gli aggiornamenti al Keystore nel controllo del codice sorgente potrebbero essere bloccati e monitorati con attenzione

- Contro

  • Maggiore complessità per la gestione della certificazione
  • Il keystore verrà comunque aggiunto al modulo nel processo di distribuzione, quindi il vantaggio di sicurezza è limitato

Piano B

Invece di mantenere un keystore statico, ogni volta che viene avviato il processo di costruzione, viene creato un nuovo keystore con una chiave pseudo casuale. La chiave viene quindi aggiunta come parte del file zip nel nostro processo di compilazione. I certificati dovranno quindi essere aggiunti al keystore. La maggior parte delle istanze di questo modulo Java hanno certificati univoci, quindi non mantenere il riferimento statico non introdurrebbe una grande quantità di lavoro occupato.

- Professionisti

  • Nessun keystore statico per gli aggressori per trarre vantaggio da

  • Ogni istanza del keystore ha la propria password

- Contro

  • Aumenta la complessità del processo di creazione

  • Se lo stesso certificato viene utilizzato su più istanze di questo modulo, il certificato dovrà essere aggiunto a ciascuna di esse.

Qual è la mia opzione migliore? Anche io sto andando giù per la strada giusta con questo?

    
posta rdChris 18.09.2015 - 16:47
fonte

2 risposte

2

Tutte le organizzazioni che ho lavorato nelle credenziali del negozio o informazioni ugualmente sensibili in una posizione ben nota al di fuori della directory di distribuzione dell'applicazione e sono protette per ambiente. Gli sviluppatori creano i file stessi con le credenziali di sviluppo mentre quelli di produzione sono creati da operazioni e protetti in modo che solo l'applicazione abbia accesso.

Se si desidera che l'applicazione venga eseguita senza configurazione dopo il checkout, è possibile incorporare alcune copie fittizie che vengono utilizzate solo quando il file non può essere trovato nella posizione nota.

    
risposta data 18.09.2015 - 18:26
fonte
0

Which is my better option? Also am I going down the right path with this?

Dipende .

Il tipo di applicazione, il modello di minaccia dell'applicazione e il profilo di attacco aziendale dettano l'opzione giusta. Se stai chiedendo informazioni sulle best practice, ti suggerisco di utilizzare un dispositivo HSM per l'ambiente di sviluppo e uno per la produzione . Questi dispositivi sono creati appositamente per la gestione sicura delle chiavi. Qualsiasi altra opzione personalizzata presenta uno o più difetti di sicurezza, complessità non necessaria o un vettore di attacco sconosciuto.

Ovviamente la sicurezza fornita da un dispositivo HSM ha un costo. L'altra opzione pratica è implementare un'infrastruttura PKI interna basata su software . Dipende dallo stack del tuo server (MS, Unix, ecc.), Ci sono diversi modi per implementarlo. Ad esempio, pki.io , un progetto di gestione dei certificati X.509 open source , sebbene un progetto giovane possa semplificare la gestione delle chiavi interne.

    
risposta data 19.10.2015 - 00:40
fonte

Leggi altre domande sui tag