Comment mon programme Java sait-il où se trouve mon keystore contenant le certificat? Ou comment dire à mon programme Java où chercher le keystore?
Après avoir spécifié le keystore d'une manière ou d'une autre, comment spécifier le certificat à utiliser pour authentifier le serveur auprès du client?
Réponses:
la source
Les propriétés SSL sont définies au niveau JVM via les propriétés système. Cela signifie que vous pouvez soit les définir lorsque vous exécutez le programme (java -D ....), soit les définir dans le code en faisant System.setProperty.
Les clés spécifiques que vous devez définir sont ci-dessous:
la source
Juste un mot d'avertissement. Si vous essayez d'ouvrir un keystore JKS existant à partir de Java 9, vous devez vous assurer de mentionner également les propriétés suivantes avec la valeur "JKS":
La raison étant que le type de keystore par défaut tel que prescrit dans le fichier java.security a été changé en pkcs12 à partir de jks à partir de Java 9.
la source
Tout d'abord, il existe deux types de keystores.
Individuel et général
L'application utilisera celui indiqué au démarrage ou celui par défaut du système.
Ce sera un dossier différent si JRE ou JDK est en cours d'exécution, ou si vous cochez le dossier personnel ou "global".
Ils sont également cryptés
En bref, le chemin sera comme:
$JAVA_HOME/lib/security/cacerts
pour le "général", qui a tout le CA pour les autorités et est assez important.la source
vous pouvez également mentionner le chemin au moment de l'exécution en utilisant les
-D
propriétés comme ci-dessousDans mon application apache spark, j'avais l'habitude de fournir le chemin des certificats et du keystore en utilisant l'
--conf
option etextraJavaoptions
dans spark-submit comme ci-dessousla source