Есть ли способ загрузить другие элементы, отличные от указанных в папке java_home / jre / lib / security? - PullRequest
27 голосов
/ 15 апреля 2010

У меня есть одна установка Java в системе, которая запускает 2 или 3 приложения.

Все приложения используют одну и ту же среду выполнения.

Есть ли способ указать другие хранилища ключей для сертификатов, чем в java_home / jre / lib / security. То есть есть ли возможность указать «дополнительное» хранилище ключей, которое загружается и добавляется к сертификатам, загруженным из java_home / jre / lib / security / cacerts?

Чего я хочу избежать, так это повторного импорта нашего локального кода каждый раз, когда я обновляю jdk в коробке.

Ответы [ 4 ]

55 голосов
/ 15 апреля 2010

Я думаю, что вы хотите указать хранилище доверенных сертификатов:

java -Djavax.net.ssl.trustStore=/home/gene/mycacerts ...

Или, если вы используете сертификаты через JSSE (возможно, так и есть), вы можете скопировать хранилище доверенных сертификатов в jssecacerts в каталоге $JAVA_HOME/jre/lib/security/(хотя вам все равно придется делать это каждый раз, когда JDK устанавливается / переустанавливается).JSSE Sun ищет $JAVA_HOME/jre/lib/security/jssecacerts до $JAVA_HOME/jre/lib/security/cacerts.

См. http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#X509TrustManager

7 голосов
/ 07 ноября 2017

Эти оба параметра jvm используются для поиска пользовательского хранилища доверенных сертификатов и их пароля.

java -Djavax.net.ssl.trustStore=custompath/cacerts -Djavax.net.ssl.trustStorePassword=changeit

Чтобы убедиться, что приложение trustStore загружается приложением, добавьте также следующий аргумент:

-Djavax.net.debug=ssl:handshake
0 голосов
/ 26 июля 2018

Если ваша JVM содержит более одного приложения, то по умолчанию все приложения будут использовать хранилище cacerts по умолчанию, которое находится в $ JAVA_HOME / jre / lib / security / location. Но если вы хотите, чтобы приложения использовали другое хранилище сертификатов, вам нужно определить собственное хранилище сертификатов и указать на это. Таким образом, вы можете создать свой собственный магазин сертификатов. System.setProperty ("javax.net.ssl.trustStore", "C: / certStore / cusomtcacerts"); - используйте эту строку перед созданием сеанса http / https. Вы также можете импортировать сертификаты в cusomtcacerts, используя keytool.

0 голосов
/ 15 апреля 2010

Согласно этому:

Справочник по Java SSE - настройка

Вы можете использовать системное свойство:

javax.net.ssl.keyStore

Как:

java -Djavax.net.ssl.keyStore=youkeystore YourProgram

Но !! Я никогда не пробовал. Дайте мне знать, если это работает, не так ли?

...