2016-10-09 11 views
0

プロジェクトで作業中にキーストアをどこに置くべきか疑問を知ってもらえますか?秘密鍵を保存する適切な場所

私はJavaがsecuirty/cancertsで鍵ストアを維持していることを知っています& cancertsは鍵ストアでtrutstore & trutstoreです。彼らは秘密鍵の鍵と値のペアを提供しています。

カスタムキーストア(キーストアにキーと値のペアを含む秘密キーが含まれています)を保存したいので、どこに保存するのですか?

他の.propertiesファイルと同じように、.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; 
} 

答えて

0

...プロジェクト自体にtest.keystoreを生成されたコードで、あなたのプライベートキー、またはキーストアを格納する場所を探していますか?

いずれにしても、どちらの場合でも、それらを保存する最も良い場所はホームフォルダです(デフォルトで秘密鍵は〜/ .ssh/on * nixシステムで作成されます)。 秘密鍵/キーストアには、あなた(ストアの所有者)のみが読み取りアクセス権を持つような制限的なアクセス許可が必要です(On * nixシステムでは、これはアクセス許可0400に変換する必要があります)。

+0

Thanks Mahesh ... System.getProperty( "user.home")right ??ちょうどそれの上に.. LinuxシステムまたはWindowsシステムはこの行に影響を与えません...右か?私はホームディレクトリにファイルを置いているときにOSについて気にする必要はありません..... – ashishl

+0

短い答え、はい。 – Mahesh

+0

ありがとうございました..... ..... – ashishl