2010-04-15 5 views
18

Ho una singola installazione di java in un sistema che esegue 2 o 3 applicazioni.C'è un modo per caricare un cacerts diverso da quello specificato nella cartella java_home/jre/lib/security?

Tutte le applicazioni utilizzano lo stesso runtime.

C'è un modo per specificare un diverso keystore per i certificati rispetto a quello in java_home/jre/lib/security. Cioè, c'è un'opzione per specificare un keystore "extra" che viene caricato e aggiunto ai certificati caricati da java_home/jre/lib/security/cacerts?

Quello che voglio evitare è dover reimportare il nostro ca locale ogni volta che aggiorno il jdk nella casella.

+1

Il file 'cacerts' è un truststore, non è un archivio di chiavi. Non contiene alcuna chiave privata. – EJP

risposta

44

penso che si desidera specificare il truststore:

java -Djavax.net.ssl.trustStore=/home/gene/mycacerts ... 

Oppure, se si utilizza certs attraverso JSSE (probabilmente sono), è possibile copiare il truststore per jssecacerts nella directory $JAVA_HOME/jre/lib/security/ (anche se ci si deve ancora farlo ogni volta che un JDK viene installato/reinstallato). Sun's JSSE cerca $JAVA_HOME/jre/lib/security/jssecacerts prima dello $JAVA_HOME/jre/lib/security/cacerts.

Vedi http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#X509TrustManager

-2

Secondo questo:

Java SSE Referece Guide - Customization

È possibile utilizzare la proprietà di sistema:

javax.net.ssl.keyStore 

come:

java -Djavax.net.ssl.keyStore=youkeystore YourProgram 

Ma !! Non ho mai provato. Fammi sapere se funziona, vero?

+4

Non penso che questa sia la risposta corretta, anche se è vicina. Le proprietà javax.net.ssl.keyStore e trustStore sono leggermente diverse e ciò di cui l'OP ha bisogno è la personalizzazione di trustStore. –

+0

@GregS probabilmente hai ragione. Feniix, vuoi farci sapere i tuoi risultati? e/o quale è stata la soluzione che usi? – OscarRyz

+1

Questa risposta è sbagliata. Si prega di vedere la prossima risposta. – Opher

3

Queste entrambe le opzioni JVM vengono utilizzati per individuare truststore costume e la loro password.

java -Djavax.net.ssl.trustStore=custompath/cacerts -Djavax.net.ssl.trustStorePassword=changeit 

Al fine di assicurarsi che ciò che trustStore viene caricata dall'applicazione, aggiungere seguente argomento così,

-Djavax.net.debug=ssl:handshake