2011-02-05 57 views
3

我们正在使用SunMSCAPI检索如下当前用户密钥库..转换密钥库 - Windows的我为JKS

keystore = KeyStore.getInstance("Windows-MY", "SunMSCAPI"); 

我们需要建立JKS类型/ PKCS12的密钥库JSSE,并将它传递给应用程序..

开始了解如何工作的种类..任何帮助,将不胜感激。

回答

0

你有没有尝试类似

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。

+0

谢谢。 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

+0

我想,它是可能的,但需要设置密钥保护算法,无论它是什么。整个API比加密更加神秘。顺便说一下,你知道http://portecle.sourceforge.net/它可能能够做到,或者你至少可以检查源代码。 – maaartinus

+0

谢谢你的帮助。我回顾了来源或门襟。它也是一样的..获取密钥,certchain和setskeyentry ..我可以做同样的转换JKS商店到PKCS12,但不是为了这个特定的目的。当我们使用SunMSCAPI从该商店检索密钥时,密钥的格式和编码未指定,导致空指针。 – luckylak

相关问题