Как моя Java-программа узнает, где находится мое хранилище ключей, содержащее сертификат?
Или в качестве альтернативы: как мне сообщить моей Java-программе, где искать хранилище ключей?
После указания хранилища ключей каким-либо образом, как указать сертификат, который будет использоваться для аутентификации сервера перед клиентом?
Переведено автоматически
Ответ 1
Свойства SSL устанавливаются на уровне JVM через системные свойства. Это означает, что вы можете либо установить их при запуске программы (java -D ....), либо вы можете установить их в коде, выполнив System.setProperty .
Конкретные ключи, которые вы должны установить, приведены ниже:
javax.net.ssl.keyStore- расположение файла хранилища ключей Java, содержащего собственный сертификат и закрытый ключ прикладного процесса. В Windows указанный путь должен содержать косую черту / вместо обратной.
javax.net.ssl.keyStorePassword - пароль для доступа к закрытому ключу из файла хранилища ключей, указанного javax.net.ssl.keyStore. Этот пароль используется дважды: для разблокировки файла хранилища ключей (пароль хранилища) и для расшифровки закрытого ключа, хранящегося в хранилище ключей (пароль ключа).
javax.net.ssl.trustStore - Расположение файла хранилища ключей Java, содержащего коллекцию сертификатов CA, которым доверяет этот прикладной процесс (trust store). В Windows указанный путь должен содержать косую черту, / вместо обратной косой черты, \.
Если местоположение хранилища доверия не указано с помощью этого свойства, реализация SunJSSE выполняет поиск и использует файл хранилища ключей в следующих расположениях (по порядку):
javax.net.ssl.trustStoreType - (Необязательно) Для формата файла хранилища ключей Java это свойство имеет значение jks (или JKS). Обычно это свойство не указывается, поскольку его значением по умолчанию уже является jks.
javax.net.debug - Чтобы включить ведение журнала для уровня SSL / TLS, установите для этого свойства значение ssl.
Просто предостережение. Если вы пытаетесь открыть существующее хранилище ключей JKS в Java 9 и более поздних версиях, вам нужно убедиться, что вы также указываете следующие свойства со значением "JKS".:
В моем приложении apache spark я указывал путь к сертификатам и хранилищу ключей, используя --conf option и extraJavaoptions в spark-submit, как показано ниже