異常是:線程「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