package com.what21.demo08;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.Key;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.util.Enumeration;
public class JKSConvertToPKCS12 {
// 证书格式
public static final String JKS = "JKS";
public static final String PKCS12 = "PKCS12";
// 证书和路径
public static final String INPUT_KEYSTORE_FILE = "c:/client.jks";
public static final String KEYSTORE_PASSWORD = "12345678";
public static final String OUTPUT_KEYSTORE_FILE = "c:/client.p12";
// 证书别名
public static final String CERT_ALIAS = "client";
/**
* @param args
*/
public static void main(String[] args) throws Exception {
KeyStore inputKeyStore = KeyStore.getInstance(JKS);
FileInputStream fis = new FileInputStream(INPUT_KEYSTORE_FILE);
char[] nPassword = KEYSTORE_PASSWORD.toCharArray();
inputKeyStore.load(fis, nPassword);
fis.close();
System.out.println("keystore type=" + inputKeyStore.getType());
KeyStore outputKeyStore = KeyStore.getInstance(PKCS12);
outputKeyStore.load(null, KEYSTORE_PASSWORD.toCharArray());
Enumeration enumStrs = inputKeyStore.aliases();
while (enumStrs.hasMoreElements()) {
String keyAlias = enumStrs.nextElement();
System.out.println("alias=[" + keyAlias + "]");
if (inputKeyStore.isKeyEntry(keyAlias)) {
Key key = inputKeyStore.getKey(keyAlias, nPassword);
Certificate[] certChain = inputKeyStore
.getCertificateChain(keyAlias);
outputKeyStore.setKeyEntry(CERT_ALIAS, key,
KEYSTORE_PASSWORD.toCharArray(), certChain);
}
}
FileOutputStream out = new FileOutputStream(OUTPUT_KEYSTORE_FILE);
outputKeyStore.store(out, nPassword);
out.close();
}
}