Necesito importar un certificado en mi almacén de claves JVM. Estoy usando lo siguiente:
keytool -import -alias daldap -file somecert.cer
así que probablemente necesite cambiar mi llamada a algo como:
keytool -import -alias daldap -file somecert.cer -keystore cacerts –storepass changeit
Respuestas:
Tu almacén de claves estará en tu
JAVA_HOME---> JRE -->lib---> security--> cacerts
. Debe comprobar dónde está configurado su JAVA_HOME, posiblemente uno de estos lugares,Computadora ---> Avanzado -> Variables de entorno ---> JAVA_HOME
Los archivos por lotes de inicio del servidor.
En su comando de importación -keystore cacerts (dé la ruta completa al JRE anterior aquí en lugar de simplemente decir cacerts).
fuente
Ubicación del almacén de claves
Cada comando keytool tiene una
-keystore
opción para especificar el nombre y la ubicación del archivo de almacén de claves persistente para el almacén de claves administrado por keytool. El almacén de claves se almacena de manera predeterminada en un archivo nombrado.keystore
en el directorio de inicio del usuario, según lo determine la propiedad del sistema "user.home". Dado el nombre de usuario uName, el valor de la propiedad "user.home" está predeterminadoPor lo tanto, si el nombre de usuario es "cathy", "user.home" por defecto es
http://docs.oracle.com/javase/1.5/docs/tooldocs/windows/keytool.html
fuente
~/.keystore
archivo misterioso ! Si dejé el-keystore
parámetro, no podría averiguar quékeytool
orientación predeterminada del almacén de claves . Seguí buscando otrocacerts
en otro lugar de la máquina. No esperaba que keytool se generara~/.keystore
en el directorio de inicio, ni que se nombrara en.keystore
lugar decacerts
. ¡Has completado un espacio en blanco que la gente de Java debería documentar! ¡Gracias!Mac OS X 10.12 con Java 1.8:
$ JAVA_HOME / jre / lib / security
/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
A partir de ahí está en:
Tengo un almacén de claves cacerts allí.
Para especificar esto como una opción de VM:
No digo que esta sea la forma correcta (¿por qué Java no sabe mirar dentro de JAVA_HOME?), Pero esto es lo que tuve que hacer para que funcionara.
fuente
Puede encontrarlo en su directorio "Inicio":
En Windows 7:
En Linux (Ubuntu):
fuente
user.home
es igual a la$HOMEDRIVE$HOMEPATH
establecida por windows y no$HOME
establecida por cygwin whereHOMEDRIVE=C:
yHOMEPATH=\Users\[YOUR ACCOUNT]
Esto funciona para mi:
Solo para Linux. Mi Solaris no tiene enlace de lectura. Al final utilicé este Perl-Script:
fuente
Como mencionó DimtryB, por defecto el almacén de claves está bajo el directorio del usuario. Pero si está intentando actualizar el
cacerts
archivo, para que la JVM pueda elegir las claves, entonces deberá actualizar elcacerts
archivojre/lib/security
. También puede ver las claves ejecutando el comandokeytool -list -keystore cacerts
para ver si se agrega su certificado.fuente
lib/security
ruta correcta automáticamente si solo se le da el nombre relativo.-importcert
. El comando de lista muestra los certificados de todo el sistema, pero el comando de importación genera un nuevo archivo en el directorio actual.updatedb; locate cacerts
ayuda a encontrar dónde están las ubicaciones de instalación de los archivos cacerts.En Debian, usando la versión de openjdk "1.8.0_212", encontré cacerts aquí:
Seguro sería útil si hubiera un comando estándar que imprima esta ruta.
fuente
Para mí, usando la imagen oficial de Docker OpenJDK 12 , la ubicación del almacén de claves de Java era:
fuente
keytool -import -file example.crt -alias exampleCA -keystore truststore.jks
, también usa el parámetro-keystore
... en mi humilde opinión, no está claro. Y por último pero no menos importante: estaba buscando ese problema exacto, y encontré esa pregunta. Tal vez otros expliquen lo mismo.Encontramos este problema en un Tomcat que se ejecuta desde un directorio jre que se eliminó (casi por completo) después de una actualización automática de jre, por lo que el jre en ejecución ya no pudo encontrar jre ... / lib / security / cacerts porque ya no existía.
El reinicio de Tomcat (después de cambiar la configuración para ejecutarse desde la ubicación diferente de jre) solucionó el problema.
fuente
Además de todas las respuestas anteriores:
Si actualizar el archivo cacerts en el directorio JRE no ayuda, intente actualizarlo en JDK.
C: \ Archivos de programa \ Java \ jdk1.8.0_192 \ jre \ lib \ security
fuente