Привет, Я разрабатываю чат-программу, которая будет использовать keystores в java. В настоящий момент вы можете загрузить хранилище ключей через аргумент командной строки в терминале. Программа будет начата следующей java Chat /keystore TEST.keystore
- основной методМожно ли загружать в KeyStore с помощью JFileChooser?
public static void main(String[] args) {
int arg_length = args.length;
switch (arg_length) {
case 1:
if (args[0].equalsIgnoreCase("/keystore")) {
keystore = args[1];
File test = new File(keystore);
if (!test.exists()) {
displayHelpInformation();
}
} else {
displayHelpInformation();
}
break;
}
Chat my_server = new Chat(port);
}
Keystore объявлен в виде строки и, как вы можете увидеть ниже загружает хранилище ключей из данного входного потока.
private SSLServerSocketFactory getSSLServerSocketFactory() {
SSLContext ctx = null;
try {
KeyManagerFactory kmf;
TrustManagerFactory tmf;
KeyStore ks;
char[] password = "password".toCharArray();
// Returns a SSLContext object that implements the specified secure
// socket protocol.
ctx = SSLContext.getInstance("TLS");
kmf = KeyManagerFactory.getInstance(KeyManagerFactory
.getDefaultAlgorithm());
tmf = TrustManagerFactory.getInstance(TrustManagerFactory
.getDefaultAlgorithm());
// returns keystore object of type Java KeyStore
ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream(keystore), password);
kmf.init(ks, password);
tmf.init(ks);
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
} catch (Exception e) {
e.printStackTrace();
}
return ctx.getServerSocketFactory();
}
То, что я пытаюсь сделать, это позволить пользователю выбрать хранилище ключей с помощью JFileChooser в главном окне вместо того чтобы использовать аргументы командной строки? Это возможно? Меня беспокоит тот факт, что хранилище ключей имеет пароль.
Не могли бы вы разъяснял, как я хотел бы сделать это ** Что касается пароля части. Если вы используете ks.load (новый FileInputStream (keystore), пароль); с успехом, а затем передать ему файл, который вы получили от JFileChooser, также будет работать. ** – roukzz
Ну, JFileChooser предоставит объект File. Это можно использовать любым способом. Поэтому просто передайте этот File Object стандартным способом загрузки хранилища ключей, и он должен работать так же, как если бы он был передан в качестве аргумента. 'file.getAbsolutePath();' даст вам строку пути к файлу, о котором идет речь ... Если вы хотите поговорить об этом больше, присоединитесь к http://collabedit.com/y96km – Ubica