Есть ли способ загрузить другой cacerts, чем тот, который указан в папке Java home/jre/lib/security?
У меня есть одна установка java в системе, которая запускает 2 или 3 приложения.
все приложения используют одну и ту же среду выполнения.
есть ли способ указать другие хранилища ключей для сертификатов ca, чем в java_home/jre/lib / security. То есть, есть ли возможность указать "дополнительное" хранилище ключей, которое загружается и добавляется к сертификатам, загруженным из java_home/jre/lib/security/cacerts?
чего я хочу избежать, так это повторного импорта нашего локального ca каждый раз, когда я обновляю jdk в коробке.
4 ответов
Я думаю, вы хотите указать truststore:
java -Djavax.net.ssl.trustStore=/home/gene/mycacerts ...
или если вы используете сертификаты через JSSE (вы, вероятно,), вы можете скопировать свой truststore в jssecacerts
на $JAVA_HOME/jre/lib/security/
каталог (хотя вам все равно придется делать это каждый раз, когда JDK был установлен/переустановлен). Sun's 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
эти оба параметра jvm используются для поиска пользовательского truststore и их пароля.
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 . Но если вы хотите, чтобы приложения использовали другое хранилище сертификатов, вам нужно определить пользовательское хранилище сертификатов и указать на это. Таким образом, вы можете создать свой собственный certstore. Системы.методов-setproperty("пакета javax.чистая.протокол SSL.надежное хранилище", "C:/certStore/cusomtcacerts");-- использовать эту линию до создания протоколу HTTP/HTTPS-сеанс. Вы также можно импортировать сертификаты в cusomtcacerts с помощью keytool.
согласно этому:
руководство Java SSE Referece-настройка
Вы можете использовать системное свойство:
javax.net.ssl.keyStore
Как:
java -Djavax.net.ssl.keyStore=youkeystore YourProgram
но!! Я никогда не пробовал. Дай мне знать, если это сработает.