2010-11-04 4 views
33

Я пишу приложение, использующее SSL. Следовательно, у меня есть манекен хранилище ключей и фиктивная доверенность, которую я хочу предоставить моему клиенту. Есть ли папка по умолчанию, чтобы поместить их в мой дистрибутив? , например. docs, lib, bin ... и т. д. Где обычно хранится хранилище ключей на сервере и где обычно находится клиент доверия?Какое местоположение по умолчанию для хранилищ хранилища/доверия Java-приложений?

Благодаря

ответ

28

В Java, в соответствии с JSSE Reference Guide, нет по умолчанию для keystore, по умолчанию для truststore является "jssecacerts, если он существует. В противном случае, cacerts".

Некоторые приложения используют ~/.keystore как хранилище ключей по умолчанию, но это не без проблем (в основном из-за того, что вы не хотите, чтобы все приложение запускалось пользователем для использования этого хранилища доверия).

Я бы предложил использовать значения, специфичные для приложения, которые вы связываете с вашим приложением, но в целом это будет более приемлемым.

+1

Keystore and Truststore являются общей терминологией PKI и не являются специфическими для Java. – user93353

+0

@ user93353, он варьируется в зависимости от реализации. PKI говорит о доверии по-разному, но это может быть «хранилище доверия», «доверительные привязки» или просто «доверенные сертификаты». В Windows/schannel вы также получаете «Магазин доверенных корневых центров сертификации» и т. Д. AFAIK, нет единой терминологии. – Bruno

+20

Более конкретно, по умолчанию расположены /lib/security/jssecacerts и /lib/security/cacerts, и вы переопределяете его с помощью системного свойства javax.net.ssl.trustStore. – Eric

14

Как сказал Бруно, вы лучше настраиваете его самостоятельно. Вот как я это делаю. Начните с создания файла свойств (/etc/myapp/config.properties).

javax.net.ssl.keyStore = /etc/myapp/keyStore 
javax.net.ssl.keyStorePassword = 123456 

Затем загрузите свойства в свою среду из своего кода. Это делает ваше приложение настраиваемым.

FileInputStream propFile = new FileInputStream("/etc/myapp/config.properties"); 
Properties p = new Properties(System.getProperties()); 
p.load(propFile); 
System.setProperties(p); 
+0

HI Kristian Benoit - Ваш ответ кажется логичным - можете ли вы рассказать о своих подробностях ответа - или ссылку на блог ... для полного руководства. Sry Я немного новичок в хранилище ключей, буду благодарен за ваши усилия –