Есть ли способ загрузить другие элементы, отличные от указанных в папке java_home/jre/lib/security?
У меня есть одна установка Java в системе, которая запускает 2 или 3 приложения.
Все приложения используют одну и ту же среду выполнения.
Есть ли способ указать другое хранилище ключей для сертификатов CA, чем в java_home / jre / lib / security. То есть есть ли возможность указать "дополнительное" хранилище ключей, которое загружается и добавляется к сертификатам, загруженным из java_home / jre / lib / security / cacerts?
Чего я хочу избежать, так это повторного импорта нашего локального CA каждый раз, когда я обновляю jdk в коробке.
4 ответа
Я думаю, что вы хотите указать хранилище доверенных сертификатов:
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.
Обе опции jvm используются для поиска пользовательского хранилища доверенных сертификатов и их пароля.
java -Djavax.net.ssl.trustStore=custompath/cacerts -Djavax.net.ssl.trustStorePassword=changeit
Чтобы убедиться, что приложение trustStore загружается приложением, добавьте также следующий аргумент:
-Djavax.net.debug=ssl:handshake
Если ваша JVM содержит более одного приложения, то по умолчанию все приложения будут использовать хранилище cacerts по умолчанию, которое находится в $JAVA_HOME/jre/lib/security/ location . Но если вы хотите, чтобы приложения использовали другое хранилище сертификатов, вам нужно определить собственное хранилище сертификатов и указать на него. Таким образом, вы можете создать свой собственный магазин сертификатов. System.setProperty("javax.net.ssl.trustStore", "C:/certStore/cusomtcacerts");- используйте эту строку перед созданием сеанса http / https. Вы также можете импортировать сертификаты в cusomtcacerts, используя keytool.
Согласно этому:
Java SSE Referece Guide - Настройка
Вы можете использовать системное свойство:
javax.net.ssl.keyStore
Подобно:
java -Djavax.net.ssl.keyStore=youkeystore YourProgram
Но!! Я никогда не пробовал. Дайте мне знать, если это работает, не так ли?