web-dev-qa-db-fra.com

Comment créer par programme un nouveau KeyStore?

J'essaie de créer par programme un nouveau magasin de clés en Java. Le code suivant:

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.setCertificateEntry("alias", cert);

lève une exception KeyStore non initialisé.

54
Καrτhικ

Le KeyStore doit être chargé après sa création. La méthode de chargement demande la lecture d'un FileInputStream mais si vous en fournissez un nul, un KeyStore vide est chargé.

Voir ce lien

53
charisis

Pour créer un nouveau KeyStore dans Java vous devez d'abord créer le fichier KeyStore puis le stocker en utilisant la méthode store(FileOutputStream, char[]):

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());

char[] password = "some password".toCharArray();
ks.load(null, password);

// Store away the keystore.
FileOutputStream fos = new FileOutputStream("newKeyStoreFileName");
ks.store(fos, password);
fos.close();

J'espère que cela vous aide, vous pouvez voir plus d'informations ici .

69
Assaf Gamliel

J'utilise ce code, ça marche, j'espère que ça peut aider.

public static KeyStore createKeyStore() throws Exception {
    File file = new File("/Users/keyserverstore.keystore");
    KeyStore keyStore = KeyStore.getInstance("JKS");
    if (file.exists()) {
        // if exists, load
        keyStore.load(new FileInputStream(file), "123456".toCharArray());
    } else {
        // if not exists, create
        keyStore.load(null, null);
        keyStore.store(new FileOutputStream(file), "123456".toCharArray());
    }
    return keyStore;
}
4
Jay
 // load the keystore
 KeyStore p12 = KeyStore.getInstance("pkcs12");
 p12.load(new FileInputStream("KEYSTORE.p12"), "passwd".toCharArray());

// load the private key entry from the keystore  
 Key key = p12.getKey("mykey", "passwd".toCharArray()); 
 PrivateKey privKey = (PrivateKey) key;
0
Nadeeshan Herath