Есть ли способ загрузить другой 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

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