2010-04-15 17 views
18

J'ai une seule installation de Java dans un système qui exécute 2 ou 3 applications.Existe-t-il un moyen de charger un cacerts différent de celui spécifié dans le dossier java_home/jre/lib/security?

Toutes les applications utilisent la même durée d'exécution.

Existe-t-il un moyen de spécifier un fichier de clés différent pour les certificats que celui de java_home/jre/lib/security. Autrement dit, existe-t-il une option permettant de spécifier un fichier de clés "supplémentaire" chargé et ajouté aux certificats chargés depuis java_home/jre/lib/security/cacerts? Ce que je veux éviter est d'avoir à ré-importer notre ca local chaque fois que je met à jour le jdk dans la boîte.

+1

Le fichier 'cacerts' est un truststore, pas un keystore. Il ne contient aucune clé privée. – EJP

Répondre

44

Je pense que vous voulez spécifier le truststore:

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

Ou si vous utilisez certs par JSSE (vous êtes probablement), vous pouvez copier votre truststore à jssecacerts dans le répertoire $JAVA_HOME/jre/lib/security/ (bien que vous encore à faire chaque fois qu'un JDK a été installé/réinstallé). La JSSE de Sun recherche $JAVA_HOME/jre/lib/security/jssecacerts avant $JAVA_HOME/jre/lib/security/cacerts.

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

-2

Selon ceci:

Java SSE Referece Guide - Customization

Vous pouvez utiliser la propriété système:

javax.net.ssl.keyStore 

Comme:

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

Mais !! Je n'ai jamais essayé. Faites-moi savoir si ça marche, hein?

+4

Je ne pense pas que ce soit la bonne réponse, même si elle est proche. Les propriétés javax.net.ssl.keyStore et trustStore sont subtilement différentes, et ce dont le PO a besoin est la personnalisation de trustStore. –

+0

@GregS vous avez probablement raison. Feniix, pourriez-vous nous communiquer vos résultats? et/ou quelle était la solution que vous utilisiez? – OscarRyz

+1

Cette réponse est fausse. S'il vous plaît voir la réponse suivante. – Opher

3

Ces deux options jvm sont utilisées pour localiser et truststore personnalisé leur mot de passe.

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

Afin de vous assurer que trustStore est chargé par l'application, ajoutez l'argument suivant ainsi,

-Djavax.net.debug=ssl:handshake