Pregunta

No puedo creer que soy la única persona que se enfrenta a este problema. He estado buscando en Google durante horas y no he tenido suerte. La documentación de seguridad de Java no parece abordar los certificados PKCS12 a fondo.

Estoy intentando configurar Java para certificados PKCS12 específicos del usuario. Entre otras cosas, esto se utilizará para que, en Eclipse, pueda acceder a un servidor Trac que se autentica mediante certificados. Estoy usando el complemento de integración Trac Mylyn para eclipse.

Aquí está la configuración:

  • los directorios de inicio del usuario están en / home
  • montaje multiusuario en / central
  • cada usuario tiene un certificado personal en: ~ / user.p12
  • la contraseña para certificados personales es: pass1234
  • la contraseña de los usuarios se almacena en un archivo 0400 en ~ / password.txt
  • un almacén de confianza de solo lectura para el ca está en: /central/ca.jks
  • sin contraseña para el almacén de confianza
  • JDK 1.6 instalado en /central/jdk_1.6.0
  • Eclipse 3.4 instalado en /central/eclipse_3.4.0
  • JAVA_HOME = / central / jdk_1.6.0
  • JAVA_HOME está configurado en la ubicación JDK porque Eclipse lo necesita
  • ECLIPSE_HOME = / central / eclipse_3.4.0
  • JRE vive en $ JAVA_HOME / jre
  • cada usuario tiene un archivo ~ / .java.policy
  • hay un servidor trac ejecutándose en https: //trac.internal/trac
  • el servidor trac se autentica usando certificados

Ahora, quiero poder hacer que cada usuario simplemente modifique algún archivo que posea (como el archivo ~ / .java.policy, por ejemplo), y poder iniciar la aplicación central de Eclipse y acceder al repositorio de Trac . Parece bastante simple.

En este momento, la única forma en que puedo hacer que esto funcione es editar el archivo $ ECLIPSE_HOME / eclipse.ini y agregar

-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, eso funciona, pero hay dos problemas:

  • Cada usuario debe tener su propia instalación de ecipse. (¿o puede eclipse leer eso de un archivo de usuario?)
  • Es específico de Eclipse, en última instancia, me gustaría tener esto como una configuración de Java.

Además, recuerdo desde hace algún tiempo que puede editar el archivo $ JAVA_HOME / jre / lib / security / java.security y agregar

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

Pero Eclipse no parece captar eso. ¿Podría ser porque mi JAVA_HOME apunta a un JDK y no al JRE anidado del JDK?

He visto la Java PKCS # 11 Referencia que hace referencia a las siguientes propiedades: keyStoreURL = " NINGUNO " keyStoreType = " PKCS11 " keyStorePasswordURL = some_pin_url

Hubo otra referencia que vi que decía que podía editar el archivo ~ / .java.policy para incluir:

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

Pero eso tampoco se recoge. Tal vez realmente funcione y no se lea por la misma razón que el archivo java.security no funciona, o tal vez simplemente no funciona en absoluto.

Algunas propiedades del sistema que he visto:

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"

Entonces, en este momento, supongo que estoy atascado con que cada usuario tenga su propio Eclipse intacto. Sé que suena como una configuración complicada, pero esto realmente no debería tener nada que ver con Eclipse en cuanto a la configuración del certificado ... es realmente una configuración de Java para certificados específicos del usuario.

¿Alguna idea?

¿Fue útil?

Solución

Utilice un configuración específica del usuario .

  

Configuración de la ubicación del área de configuración privada

     

La ubicación predeterminada para un área de configuración privada es:

     

user-home-dir / .eclipse / < product-id > _ < product-version > / configuration

     

El directorio de inicio del usuario está determinado por la propiedad del sistema Java user.home. El id. Del producto y la versión se obtienen del archivo marcador del producto .eclipseproduct en la instalación de Eclipse.

Otros consejos

puede almacenar toda esa información en un archivo y leerlo y establecer cada variable en el código usando:

System.setProperty(...);

Avísame cuando eso resuelva tu problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top