2009-03-19 11 views
9

Je n'arrive pas à croire que je sois la seule personne à affronter ce problème. Je googling pendant des heures et n'ai pas eu de chance. La documentation de sécurité Java ne semble pas adresser complètement les certificats PKCS12. J'essaie de configurer Java pour les certificats PKCS12 spécifiques à l'utilisateur. Entre autres choses, cela sera utilisé pour que, dans Eclipse, je puisse accéder à un serveur Trac authentifié via des certificats. J'utilise le plugin d'intégration de Trac Mylyn pour eclipse.Comment configurer Java pour utiliser des certificats spécifiques à l'utilisateur pour Eclipse?

Voici la configuration:

  • utilisateur répertoires personnels sont à/home
  • multiutilisateur montage au/central
  • chaque utilisateur dispose d'un certificat personnel à: ~/user.p12
  • mot de passe pour les certificats personnels est: pass1234
  • le mot de passe des utilisateurs est stocké dans un fichier 0400 à ~/password.txt
  • un magasin de confiance en lecture seule pour le ca est à: /central/ca.jks
  • aucun mot de passe pour le truststore
  • JDK 1.6 installé à /central/jdk_1.6.0
  • Eclipse 3.4 installé à /central/eclipse_3.4.0
  • JAVA_HOME = /central/jdk_1.6.0
  • JAVA_HOME est à l'emplacement JDK car Eclipse a besoin de ce
  • ECLIPSE_HOME =/central/eclipse_3.4.0
  • vit à $ JRE JAVA_HOME/jre
  • chaque utilisateur dispose d'un ~/.ja fichier va.policy
  • il y a un serveur trac fonctionnant à https://trac.internal/trac
  • le serveur trac authentifie en utilisant des certificats

Maintenant, je veux être en mesure d'avoir chaque utilisateur simplement modifier certains fichiers qu'ils possèdent (comme le fichier ~/.java.policy, par exemple), et être capable de lancer l'application centrale Eclipse et accéder au référentiel Trac. Cela semble assez simple.

En ce moment, la seule façon que je peux obtenir ce travail est d'éditer le fichier ECLIPSE_HOME $/eclipse.ini et ajouter

-Djavax.net.ssl.keyStore="/home/user/user.p12" 
-Djavax.net.ssl.keyStoreType="PKCS12" 
-Djavax.net.ssl.keyStorePassword="pass1234" 
-Djavax.net.ssl.trustStore="/central/ca.jks" 

Ok, ça fonctionne, mais il y a deux problèmes avec elle:

  • Chaque utilisateur doit avoir sa propre installation ecipse. (ou peut éclipse lire cela à partir d'un fichier utilisateur?)
  • Il est spécifique à Eclipse, je voudrais finalement avoir cela comme une configuration Java.

semblent aussi, je me souviens de quelque temps que vous pouvez modifier le JAVA_HOME $/jre/lib/security/java.security et ajouter

keystore=/home/user/user.p12 
keystore.type=PKCS12 
keystore.password=pass1234 
truststore=/central/ca.jks 

Mais Eclipse ne pas choisir cette en haut Serait-ce parce que mon JAVA_HOME pointe vers un JDK, et non pas JRE imbriqué du JDK?

J'ai vu la Java PKCS#11 Reference qui fait référence aux propriétés suivantes: keyStoreURL = "none" keyStoreType = "PKCS11" keyStorePasswordURL = some_pin_url

Il y avait une autre référence que j'ai vu que dit que vous pouvez modifier le répertoire ~/Fichier .java.policy à inclure:

keyStore "file:///home/user/user.p12", "PKCS12", "SunJSSE"; 
keyStorePasswordUrl "file:///home/user/password.txt"; 

Mais cela ne se voit pas non plus. Peut-être que cela fonctionne réellement et qu'il n'est pas lu pour la même raison que le fichier java.security ne fonctionne pas, ou peut-être que cela ne fonctionne pas du tout.

Certaines propriétés du système que j'ai vu:

javax.net.ssl.keyStore="/home/user/user.p12" 
javax.net.ssl.keyStoreType="PKCS12" 
javax.net.ssl.keyStorePassword="password" 
javax.net.ssl.keyStoreProvider="SunJSSE" 
javax.net.ssl.trustStore="/home/user/ca.jks" 
javax.net.ssl.trustStoreType="JKS" 
javax.net.ssl.trustStorePassword="" 
javax.net.ssl.trustStoreProvider="Sun" 

Ainsi, en ce moment, je pense que je suis coincé avec avoir chaque utilisateur d'avoir leur propre Eclipse intall. Je sais que cela ressemble à une configuration compliquée, mais cela ne devrait pas vraiment avoir quelque chose à voir avec Eclipse en ce qui concerne la configuration du certificat ... c'est vraiment une configuration Java pour les certificats spécifiques à l'utilisateur.

Des idées?

Répondre

5

Utilisez un user-specific configuration.

Réglage de la zone de configuration privée emplacement

L'emplacement par défaut pour une zone de configuration privée est:

utilisateur-home-dir/.eclipse/< produit id > _ < produit version >/configuration

Le répertoire principal de l'utilisateur est déterminé par la propriété système user.home Java. L'identifiant et la version du produit sont obtenus à partir du fichier de marqueur de produit .eclipseproduct sous l'installation d'Eclipse.

0

vous pouvez stocker toutes ces informations dans un fichier et lire et définir chaque variable dans le code à l'aide:

System.setProperty(...); 

Laissez-moi savoir quand cela résout votre problème.

+0

Il n'y a pas de code, c'est juste des plugins eclipse pour pouvoir accéder à trac via eclipse. –