Есть ли способ загрузить различные cacerts, чем тот, который указан в папке java_home/jre/lib/security?
У меня есть одна установка java в системе, которая запускает 2 или 3 приложения.
Все приложения используют одну и ту же среду выполнения.
Есть ли способ указать различные хранилища ключей для сертификатов ca, чем в java_home/jre/lib/security. То есть, есть ли возможность указать "дополнительное" хранилище ключей, которое загружается и добавляется в сертификаты, загруженные из java_home/jre/lib/security/cacerts?
Я хочу избежать повторного импорта нашего локального ca каждый раз, когда я обновляю jdk в поле.
Ответы
Ответ 1
Я думаю, вы хотите указать truststore:
java -Djavax.net.ssl.trustStore=/home/gene/mycacerts ...
Или, если вы используете сертификаты через JSSE (вы, вероятно, есть), вы можете скопировать свой магазин доверия в jssecacerts
в каталог $JAVA_HOME/jre/lib/security/
(хотя вам все равно придется это делать каждый раз, когда JDK будет установлен/переустановлен). Sun JSSE ищет $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
Ответ 2
Эти оба параметра jvm используются для поиска настраиваемого хранилища доверия и их пароля.
java -Djavax.net.ssl.trustStore=custompath/cacerts -Djavax.net.ssl.trustStorePassword=changeit
Чтобы убедиться, что приложение trustStore загружается приложением, добавьте также следующий аргумент,
-Djavax.net.debug=ssl:handshake
Ответ 3
В соответствии с этим:
Руководство по рефери Java SSE - настройка
Вы можете использовать системное свойство:
javax.net.ssl.keyStore
Вроде:
java -Djavax.net.ssl.keyStore=youkeystore YourProgram
Но!! Я никогда не пробовал. Дай мне знать, если это сработает?