Есть ли способ загрузить другие элементы, отличные от указанных в папке 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

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

Другие вопросы по тегам