SSL y almacén de claves de certificado

Resuelto deborah asked hace 13 años • 6 respuestas

¿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 en el cliente?

deborah avatar May 03 '11 21:05 deborah
Aceptado

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

Las claves específicas que debe configurar se encuentran a continuación:

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

javax.net.ssl.keyStorePassword : contraseña para acceder a la clave privada desde el archivo del almacén de claves especificado por javax.net.ssl.keyStore. Esta contraseña se utiliza dos veces: para desbloquear el archivo del almacén de claves (contraseña del almacén) 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 del almacén de claves de Java que contiene la colección de certificados de CA en los que confía este proceso de aplicación (almacén de confianza). En Windows, el nombre de ruta especificado debe utilizar barras diagonales, /en lugar de barras invertidas \.

Si no se especifica una ubicación de almacén de confianza mediante 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 del almacén de claves (contraseña del almacén) 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 para la capa SSL/TLS, establezca esta propiedad en ssl.

Karthik Ramachandran avatar May 03 '2011 14:05 Karthik Ramachandran
System.setProperty("javax.net.ssl.trustStore", path_to_your_jks_file);
DaveH avatar May 03 '2011 14:05 DaveH

Sólo una palabra de precaución. Si está intentando abrir un almacén de claves JKS existente en Java 9 en adelante, debe asegurarse de mencionar también las siguientes propiedades con el valor "JKS":

javax.net.ssl.keyStoreType
javax.net.ssl.trustStoreType

La razón es que el tipo de almacén de claves predeterminado según lo prescrito en el archivo java.security se cambió a pkcs12 desde jks desde Java 9 en adelante.

Sankar Natarajan avatar Jun 25 '2018 07:06 Sankar Natarajan