from files empty create crear commands close java keystore

files - java SSL y cert keystore



java keystore files (4)

En primer lugar, hay dos tipos de almacenes de claves.

Individual y General

La aplicación utilizará la que se indica en el inicio o el predeterminado del sistema.

Será una carpeta diferente si JRE o JDK se está ejecutando, o si selecciona el personal o el "global".

Ellos están encriptados también

En resumen, el camino será como:

$JAVA_HOME/lib/security/cacerts para el "general", que tiene todas las CA para las Autoridades y es bastante importante.

¿Cómo sabe mi programa Java dónde está mi almacén de claves que contiene el certificado? O alternativamente, ¿cómo le digo a mi programa java dónde buscar el almacén de claves?

Después de especificar el almacén de claves de alguna manera, ¿cómo especificar el certificado que se utilizará para autenticar el servidor al cliente?


Las propiedades SSL se establecen en el nivel JVM a través de las propiedades del sistema. Lo que significa que puede establecerlos cuando ejecuta el programa (java -D ....) O puede establecerlos en el código haciendo System.setProperty.

Las claves específicas que debes establecer están a continuación:

javax.net.ssl.keyStore : ubicación del archivo del almacén de claves Java que contiene el certificado y la clave privada de un proceso de aplicación. En Windows, el nombre de ruta especificado debe usar barras diagonales, /, en lugar de barras diagonales inversas.

javax.net.ssl.keyStorePassword - Contraseña para acceder a la clave privada del archivo keystore especificado por javax.net.ssl.keyStore. Esta contraseña se usa dos veces: para desbloquear el archivo de almacén de claves (contraseña de la tienda) y para descifrar la clave privada almacenada en el almacén de claves (contraseña de la clave).

javax.net.ssl.trustStore : ubicación del archivo de almacén de claves de Java que contiene la colección de certificados de CA de confianza por este proceso de aplicación (almacén de confianza). En Windows, el nombre de ruta especificado debe usar barras diagonales, / , en lugar de barras diagonales inversas, / .

Si no se especifica una ubicación de almacenamiento de confianza con esta propiedad, la implementación de SunJSSE busca y utiliza un archivo de almacén de claves en las siguientes ubicaciones (en orden):

  1. $JAVA_HOME/lib/security/jssecacerts
  2. $JAVA_HOME/lib/security/cacerts

javax.net.ssl.trustStorePassword - Contraseña para desbloquear el archivo de almacén de claves (contraseña de la tienda) especificado por javax.net.ssl.trustStore .

javax.net.ssl.trustStoreType - (Opcional) Para el formato de archivo de almacén de claves Java, esta propiedad tiene el valor jks (o JKS). Normalmente, no especifica esta propiedad porque su valor predeterminado ya es jks.

javax.net.debug : para activar el registro de la capa SSL / TLS, establezca esta propiedad en ssl.


también puede mencionar la ruta en tiempo de ejecución utilizando las propiedades -D como se muestra a continuación

-Djavax.net.ssl.trustStore=/home/user/SSL/my-cacerts -Djavax.net.ssl.keyStore=/home/user/SSL/server_keystore.jks

En mi aplicación apache spark, solía proporcionar la ruta de los certs y keystore utilizando la opción extraJavaoptions y extraJavaoptions en spark-submit como se muestra a continuación

--conf ''spark.driver.extraJavaOptions= -Djavax.net.ssl.trustStore=/home/user/SSL/my-cacerts -Djavax.net.ssl.keyStore=/home/user/SSL/server_keystore.jks''


System.setProperty("javax.net.ssl.trustStore",path_to_your_cacerts_file);