Как моя Java-программа узнает, где находится мое хранилище ключей, содержащее сертификат? Или, в качестве альтернативы, как мне указать моей Java-программе, где искать хранилище ключей?
После указания хранилища ключей, каким образом указать сертификат, который будет использоваться для аутентификации сервера на клиенте?
Ответы:
источник
Свойства SSL устанавливаются на уровне JVM через системные свойства. Это означает, что вы можете либо установить их при запуске программы (java -D ....), либо вы можете установить их в коде, выполнив System.setProperty.
Конкретные ключи, которые вы должны установить, приведены ниже:
источник
Просто предупреждение. Если вы пытаетесь открыть существующее хранилище ключей JKS в Java 9 и более поздних версиях, вам необходимо убедиться, что вы также упоминаете следующие свойства со значением как «JKS»:
Причина в том, что тип хранилища ключей по умолчанию, как предписано в файле java.security, был изменен на pkcs12 с jks с Java 9 и выше.
источник
Во-первых, есть два вида хранилищ ключей.
Индивидуальный и общий
Приложение будет использовать тот, который указан при запуске или по умолчанию системы.
Это будет другая папка, если работает JRE или JDK, или если вы проверите личную или «глобальную» папку.
Они тоже зашифрованы
Короче, путь будет такой:
$JAVA_HOME/lib/security/cacerts
для "общего", который имеет все CA для властей и является весьма важным.источник
Вы также можете упомянуть путь во время выполнения, используя
-D
свойства, как показано нижеВ моем приложении apache spark я использовал путь к сертификатам и хранилищу ключей, используя
--conf
опцию иextraJavaoptions
в spark-submit, как показано нижеисточник