2010-11-04 11 views
33

Sto scrivendo un'applicazione che utilizza SSL. Quindi, ho fittizio un keystore e un fittizio truststore che voglio fornire al mio cliente. C'è qualche cartella predefinita per metterli nella mia distribuzione? ad es. documenti, lib, bin ... ecc. Dove si trova solitamente il keystore inserito nel server e dove solitamente il truststore viene inserito nel client?Qual è il percorso predefinito per il keystore/truststore delle applicazioni Java?

Grazie

risposta

28

In Java, secondo la JSSE Reference Guide, non v'è alcun valore predefinito per il keystore, il valore predefinito per la truststore è "jssecacerts, se esiste. In caso contrario, cacerts".

Alcune applicazioni utilizzano ~/.keystore come un keystore predefinito, ma questo non è senza problemi (principalmente perché non si potrebbe desiderare che tutte le applicazioni eseguite dall'utente utilizzino tale archivio di fiducia).

Suggerirei di utilizzare valori specifici dell'applicazione che si associano con l'applicazione, invece, sarebbe tendenzialmente più applicabile in generale.

+1

Keystore e Truststore sono termini generali PKI e non specifici di Java. – user93353

+0

@ user93353, varia a seconda dell'implementazione. PKI parla della fiducia in vari modi, ma può essere "trust store", "trust ancore" o semplicemente "certificati affidabili". Su Windows/Schannel, si ottiene anche l'archivio "Autorità di certificazione radice affidabile" e così via. AFAIK, non esiste una terminologia uniforme. – Bruno

+20

In particolare, le posizioni predefinite sono /lib/security/jssecacerts e /lib/security/cacerts e la si sovrascrive con la proprietà di sistema javax.net.ssl.trustStore. – Eric

14

Come ha detto bruno, è meglio configurarlo da soli. Ecco come lo faccio. Inizia creando un file di proprietà (/etc/myapp/config.properties).

javax.net.ssl.keyStore = /etc/myapp/keyStore 
javax.net.ssl.keyStorePassword = 123456 

Quindi caricare le proprietà nel proprio ambiente dal codice. Ciò rende la tua applicazione configurabile.

FileInputStream propFile = new FileInputStream("/etc/myapp/config.properties"); 
Properties p = new Properties(System.getProperties()); 
p.load(propFile); 
System.setProperties(p); 
+0

HI Kristian Benoit - La tua risposta sembra essere logica - puoi per favore elaborare i dettagli della tua risposta - o fare riferimento a un link del blog ... per un tutorial completo. Sry, sono un po 'nuovo nel keystore, apprezzerei i tuoi sforzi –

Problemi correlati