Получить экземпляр хранилища ключей, который JVM загружает по умолчанию - PullRequest
9 голосов
/ 29 июня 2010

Я играл с безопасностью в Java и Tomcat, и мне стало интересно, какое хранилище ключей / хранилищ доверенных сертификатов было загружено JVM в конце. Несмотря на то, что у меня было создано собственное хранилище ключей и в конфигурации Tomcat, оно использовалось и как хранилище ключей, и как доверенное лицо, но реальность состояла в том, что файл cacerts по умолчанию был загружен как хранилище доверенных сертификатов (как хранилище ключей мой файл использовался правильно).

Я пытался получить имя файла, который загружает JVM, но я не нашел решения. Моя идея состояла в том, чтобы получить System.getProperty ("javax.net.ssl.keyStore"), но это дало мне нулевое значение. Я попытался установить это как в файле Tomcat server.xml через Connector, так и в качестве параметра командной строки -Djavax.net.ssl.keyStore = "file". Я уверен, что параметр командной строки был указан правильно, так как я устанавливаю параметры JMX в том же месте.

br, Мартин

Ответы [ 2 ]

5 голосов
/ 29 июня 2010

Вы не обязательно сможете получить именно то, что вы хотите, из имени файла даже типа, и установка keystore в соединителе не окажет абсолютно никакого влияния на системное свойство.

Кроме того, хранилище ключей, заданное из свойства javax.net.ssl.keyStore или явным образом созданное, является только одной частью настройки KeyManager и SSLContext. (По умолчанию Apache Tomcat будет использовать файлы и относительно простой механизм загрузки, но также возможно настроить его с помощью Tomcat SSLImplementation.) Если вы действительно хотите посмотреть, что загружается, я бы посмотрел на отладочные флаги JSSE , точнее, примерно так:

-Djavax.net.debug=SSL,keymanager,trustmanager

EDIT: Я должен добавить, что вообще не существует хранилища ключей по умолчанию (вне контекста Tomcat), только хранилище доверенных сертификатов по умолчанию JSSEImplementation Tomcat использует System.getProperty("user.home") + "/.keystore" по умолчанию.

1 голос
/ 29 июня 2010

Вы на Tomcat 6?

Я пытался установить это в catalina.bat как

set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG% -Djavax.net.ssl.keyStore="path-to-file"

, и это отражается в моем коде, используемом как System.getProperty("javax.net.ssl.keyStore")

Кроме того, для вашей информации было Bugzilla на других игнорируемых атрибутов SSL, что было исправлено в 6.0.16.хранилище ключей там конкретно не упоминается, но у меня версия 6.0.20 и она работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...