Je voudrais générer une paire de clés et l'insérer dans un KeyStore Java par programmation. Je peux utiliser la ligne de commande pour faire exactement ce que je veux, mais comment le faire en utilisant le code Java?Comment puis-je générer une paire de clés et l'insérer dans un KeyStore par programmation (sans utiliser Java KeyTool)?
Voici la ligne de commande:
keytool -genkeypair \
-dname "cn=Unknown" \
-alias main \
-keyalg RSA \
-keysize 4096 \
-keypass 654321 \
-keystore C:\\Users\\Felipe\\ks \
-storepass 123456 \
-validity 365
Voici le code Java je jusqu'à présent:
public static void main(String[] args) {
try (
FileOutputStream fos = new FileOutputStream("C:\\Users\\Felipe\\ks");
) {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(4096, SecureRandom.getInstance("SHA1PRNG"));
KeyPair keyPair = keyPairGenerator.generateKeyPair();
Certificate[] chain = {};
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null, null);
keyStore.setKeyEntry("main", keyPair.getPrivate(), "654321".toCharArray(), chain); // Error: Private key must be accompanied by certificate chain
keyStore.store(fos, "123456".toCharArray());
} catch (NoSuchAlgorithmException | KeyStoreException | CertificateException | IOException e) {
e.printStackTrace();
}
}
Mais je continue à recevoir le message d'erreur suivant: Private key must be accompanied by certificate chain
.
Je pense que je devrais créer un certificat et l'insérer dans la matrice de certificat, mais comment faire cela?