【发布时间】:2017-09-24 18:15:09
【问题描述】:
异常是:线程“main”中的异常 java.lang.ClassCastException: [Ljava.security.cert.Certificate;无法转换为 [Ljava.security.cert.X509Certificate;
在keystore.jks文件中,它有一个入口,它的别名是“/btsmed-1/certh-1/necert-1”,这个keystore.jks文件中的证书链是通过这个方法设置的:
keystore.setKeyEntry(alias, Keys.keyPair().getPrivate(),KEY_STORE_PASSWORD.toCharArray(), certChain);
keystore.store(out, KEY_STORE_PASSWORD.toCharArray());
在我将 jks 重新加载到密钥库之前,执行此语句时:
X509Certificate[] certs1 = (X509Certificate[])keystore.getCertificateChain(alias);
它不会抛出强制转换异常。
但是在 keystore.load(fIn, password); 之后执行此语句时会抛出强制转换异常:
X509Certificate[] certs1 = (X509Certificate[]) keystore.getCertificateChain(alias);
====================下面是源代码。
public class KeystoreLoad {
public static void main(String[] args) throws Exception {
char[] password = "nokia123".toCharArray();
String alias = "/btsmed-1/certh-1/necert-1";
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(null, null);
FileInputStream fIn = new FileInputStream("d://keystore/keystore.jks");
keystore.load(fIn, password);
X509Certificate[] certs1 = (X509Certificate[]) keystore.getCertificateChain(alias);
System.out.println(Arrays.toString(certs1));
}
}
【问题讨论】:
标签: java security x509certificate keystore private-key