我从JKS中提取了密钥及其证书链,现在我试图使用Java将此密钥添加到Windows密钥存储区。如何通过编程方式将私钥添加到Windows证书存储区
要加载我JKS我做了以下内容:
String jksPath = "D:\\mykeystore.jks";
KeyStore keystore = KeyStore.getInstance("JKS");
FileInputStream fIn = new FileInputStream(jksPath);
keystore.load(fIn, "12345678".toCharArray());
然后我得到的密钥和证书链:
Key key = keystore.getKey("res1", "12345678".toCharArray());
Certificate[] cchain = keystore.getCertificateChain("res1");
到目前为止好,然后我试图将此键添加到我的Windows密钥库:
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
ks.setKeyEntry("myKey", key, "12345678".toCharArray(), cchain);
而且BOOM:
线程“main”中的异常java.lang.ClassCastException:[Ljava.security.cert.Certificate;不能转换为[Ljava.security.cert.X509Certificate; (KeyStore.Keyvail),并且在密钥仓库中使用密钥存储区域(KeyStore.setKeyEntry(KeyStore.KeyKey))。 Java的:909)
例外由于抛至调用setKeyEntry电话。
P.S:当我在JKS类型的Keystore上使用相同的语法时,不会引发异常。