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é.
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
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 .
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;
}
// 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;