import sun.misc.BASE64Encoder; import java.security.cert.Certificate; import java.security.*; import java.io.File; import java.io.FileInputStream; public final class GetKey { private static void usage() { System.out.println("Usage: GetKey keystore-absolute-path keystore-passphrase alias"); } public static void main(String[] args) throws Exception { if(args.length != 3) { usage(); return; } final KeyStore ks = KeyStore.getInstance("JKS"); final String fileName = args[0]; char[] passPhrase = args[1].toCharArray(); final BASE64Encoder myB64 = new BASE64Encoder(); final File certificateFile = new File(fileName); ks.load(new FileInputStream(certificateFile), passPhrase); final String alias = args[2]; final KeyPair kp = getPrivateKey(ks, alias, passPhrase); final PrivateKey privKey = kp.getPrivate(); final String b64 = myB64.encode(privKey.getEncoded()); System.out.println("-----BEGIN PRIVATE KEY-----"); System.out.println(b64); System.out.println("-----END PRIVATE KEY-----"); } // From http://javaalmanac.com/egs/java.security/GetKeyFromKs.html public static KeyPair getPrivateKey(KeyStore keystore, String alias, char[] password) throws Exception { // Get private key final Key key = keystore.getKey(alias, password); if (key instanceof PrivateKey) { // Get certificate of public key final Certificate cert = keystore.getCertificate(alias); // Get public key final PublicKey publicKey = cert.getPublicKey(); // Return a key pair return new KeyPair(publicKey, (PrivateKey)key); } return null; } }