Может ли кто-нибудь, пожалуйста, сообщить мне или очистить мое сомнение, где именно хранилище ключей должно быть размещено во время работы над проектом.Соответствующее местонахождение сберегающего секретного ключа
Я знаю, что java хранит хранилище ключей в secuirty/cancerts & cancerts trutstore & В keystore они предоставили пару ключ-значение для секретного ключа.
Теперь я хочу сохранить свое пользовательское хранилище ключей (в этом хранилище ключей содержится секретный ключ с парой ключ-значение), Итак, где я собираюсь хранить?
это в самом проекте с файлом .keystore, как и с другим файлом .properties? или в любом другом месте?
Нужно ли мне присваивать сертификат для этого хранилища ключей, если да. как я могу прагматично?
ниже код, который генерируется test.keystore в самом проекте ...
public static void main(String[] args) throws Exception {
String fileWithKeyStore = "test.keystore";
KeyStore keyStore = JKSTest.createKeyStore(fileWithKeyStore, "pwdForKeyStoreFile");
storeKeyInKeyStore(keyStore, fileWithKeyStore);
// retriveKeyFromKeyStore(keyStore);
}
public static void storeKeyInKeyStore(KeyStore keyStore, String fileWithKeyStore) throws Exception {
System.out.println(keyStore.getType()); // JCEKS
/** Storing in key value format like map but with password */
SecretKey secretKey = KeyGenerator.getInstance("AES").generateKey(); // JWT-Key
keyStore.setEntry("map_key", new KeyStore.SecretKeyEntry(secretKey),
new PasswordProtection("pwdForMapEntry".toCharArray()));
keyStore.store(new FileOutputStream(fileWithKeyStore), "pwdForStoringFile".toCharArray());
System.out.println("Stored Key:\t" + secretKey);
}
public static void retriveKeyFromKeyStore(KeyStore keyStore)
throws NoSuchAlgorithmException, UnrecoverableEntryException, KeyStoreException {
KeyStore.Entry entry = keyStore.getEntry("map_key", new PasswordProtection("pwdForMapEntry".toCharArray()));
SecretKey keyFound = ((KeyStore.SecretKeyEntry) entry).getSecretKey();
System.out.println("Found Key:\t" + keyFound);
}
public static KeyStore createKeyStore(String fileName, String pw) throws Exception {
File file = new File(fileName);
final KeyStore keyStore = KeyStore.getInstance("JCEKS");
if (file.exists()) {
// .keystore file already exists => load it
keyStore.load(new FileInputStream(file), pw.toCharArray());
System.out.println("Existing .keystore file loaded!"+file.getAbsolutePath());
} else {
// .keystore file not created yet => create it
keyStore.load(null, null);
keyStore.store(new FileOutputStream(fileName), pw.toCharArray());
System.out.println("New .keystore file created!");
}
return keyStore;
}
Спасибо Mahesh ... System.getProperty ("user.home") правильно ??? Просто верните его .. Будет ли система Linux или система Windows не повлиять на эту строку ... right ??? Я имею в виду, что мне не нужно беспокоиться о ОС, когда я помещаю файл в домашний каталог ..... – ashishl
Короткий ответ, да. – Mahesh
Спасибо Mahesh ..... :) – ashishl