¿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?
Respuestas:
fuente
Las propiedades SSL se establecen en el nivel 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 código haciendo System.setProperty.
Las teclas específicas que debe configurar están a continuación:
fuente
Solo 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 valor como "JKS":
La razón es que el tipo de almacén de claves predeterminado según lo prescrito en el archivo java.security se ha cambiado a pkcs12 desde jks desde Java 9 en adelante.
fuente
En primer lugar, hay dos tipos de almacenes de claves.
Individual y general
La aplicación utilizará la indicada en el inicio o la predeterminada del sistema.
Será una carpeta diferente si se está ejecutando JRE o JDK, o si marca la personal o la "global".
También están encriptados
En resumen, el camino será como:
$JAVA_HOME/lib/security/cacerts
para el "general", que tiene toda la AC para las Autoridades y es bastante importante.fuente
También puede mencionar la ruta en tiempo de ejecución utilizando las
-D
propiedades a continuaciónEn mi aplicación apache spark, solía proporcionar la ruta de los certificados y el almacén de claves usando la
--conf
opción yextraJavaoptions
en spark-submit como se muestra a continuaciónfuente