Keystores are typically *.jks files, but there is no restriction on the filename or extension.
keytool is a Java utility used to create/manage keystores, keys and certificates.
To use keytool, make sure your JDK /bin directory is in your system PATH.
Now at a command prompt, type:
C:\Users\mlavannis>keytool -genkey -alias org.confucius -keyalg RSA -keystore confucius.jks -keysize 2048
This creates a new keystore ("confucius.jks") with a new set of RSA key-pair (aliased "org.confucius")
You will be asked a series of questions before the keystore and keys get created.
Use "changeit" as password for both the keystore and the key-pair.
Let us see how to access the key-pair from our Java code.
In your /src/org/confucius folder, create a class KeystoreAccess.java, like this:
package org.confucius;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.Key;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.UnrecoverableKeyException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
public class KeystoreAccess {
private static final String keystorePassword = "changeit";
private static final String keyPassword = "changeit";
private static final String keystoreFile = "C:\\users\\mlavannis\\confucius.jks";
private static final String keyAlias = "org.confucius";
public static void main(String[] args){
try {
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(new FileInputStream(keystoreFile), keystorePassword.toCharArray());
Key key = keystore.getKey(keyAlias, keyPassword.toCharArray());
System.out.println("Key = " + key);
if (key instanceof PrivateKey) {
Certificate cert = keystore.getCertificate(keyAlias);
PublicKey publicKey = cert.getPublicKey();
System.out.println("Public Key = " + publicKey);
}
}
catch (KeyStoreException e) {
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (CertificateException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
We load the keystore and the keys (using its alias), then access the private and public keys.
R-click on the file in Eclipse navigator and select Run As --> Java Application.
You will see the private and public keys printed in the console.
No comments:
Post a Comment