3
我们正在使用SunMSCAPI检索如下当前用户密钥库..转换密钥库 - Windows的我为JKS
keystore = KeyStore.getInstance("Windows-MY", "SunMSCAPI");
我们需要建立JKS类型/ PKCS12的密钥库JSSE,并将它传递给应用程序..
开始了解如何工作的种类..任何帮助,将不胜感激。
我们正在使用SunMSCAPI检索如下当前用户密钥库..转换密钥库 - Windows的我为JKS
keystore = KeyStore.getInstance("Windows-MY", "SunMSCAPI");
我们需要建立JKS类型/ PKCS12的密钥库JSSE,并将它传递给应用程序..
开始了解如何工作的种类..任何帮助,将不胜感激。
你有没有尝试类似
keystore.load(inputStreamFromOriginalFile, password);
KeyStore keystore2 = KeyStore.getInstance("JKS");
for (String name : toIterable(keystore.aliases())) {
Entry entry = keystore.getEntry(name, protParam);
keystore2.setEntry(name, entry, protParam);
}
keystore2,store(outputStream, password);
我的意思是所有条目的转储复制到一个新keystore2。
谢谢。 getentry/setentry不起作用。它试图找到keyformat和keyencoding,并将它们都设置为null。抛出下面的异常。看起来我们不能这样做。 java.security.KeyStoreException:未找到密钥保护算法:java.lang.NullPointerException \t at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineSetKeyEntry(PKCS12KeyStore.java:409) – luckylak
我想,它是可能的,但需要设置密钥保护算法,无论它是什么。整个API比加密更加神秘。顺便说一下,你知道http://portecle.sourceforge.net/它可能能够做到,或者你至少可以检查源代码。 – maaartinus
谢谢你的帮助。我回顾了来源或门襟。它也是一样的..获取密钥,certchain和setskeyentry ..我可以做同样的转换JKS商店到PKCS12,但不是为了这个特定的目的。当我们使用SunMSCAPI从该商店检索密钥时,密钥的格式和编码未指定,导致空指针。 – luckylak