【发布时间】:2016-07-24 05:00:41
【问题描述】:
我从 JKS 中提取了一个密钥及其证书链,现在我尝试使用 Java 将此密钥添加到 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);
还有繁荣:
线程“main”中的异常 java.lang.ClassCastException: [Ljava.security.cert.Certificate;无法转换为 [Ljava.security.cert.X509Certificate; 在 sun.security.mscapi.KeyStore.engineSetKeyEntry(KeyStore.java:402) 在 sun.security.mscapi.KeyStore$MY.engineSetKeyEntry(KeyStore.java:62) 在 java.security.KeyStore.setKeyEntry(KeyStore.java:909)
由于 setKeyEntry 调用而引发异常。
PS:当我在 JKS 类型的 Keystore 上使用相同的语法时,不会引发异常。
【问题讨论】:
标签: java windows security certificate keystore