异常是:线程“main”中的异常java.lang.ClassCastException:[Ljava.security.cert.Certificate;不能转换为[Ljava.security.cert.X509Certificate;如何解决此异常:线程“main”中的异常java.lang.ClassCastException
在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));
}
}
感谢您的答案,但我想转让证书[]输入X509证书[],和我不不知道为什么它会失败。 – danny
尝试修改后的一个 – Narendra
X509Certificate [] certs1 =(X509Certificate [])keystore.getCertificateChain(alias);使用相同但更改导入 – Narendra