我对KeyStore.aliases()的枚举返回值有问题;JDK 1.6上的java.security.Keystore别名与IBM 1.5
FileInputStream is = new FileInputStream("/tmp/file.p12");
List<String> aliases = new ArrayList<String>();
KeyStore keystore = KeyStore.getInstance("PKCS12");
keystore.load(is, password.toCharArray());
is.close();
Enumeration<String> e=keystore.aliases();
while(e.hasMoreElements()) {
// never reaches here because "e" is empty
System.out.println(e.nextElement().toString());
i++;
}
随着 Java版本 “1.6.0_22” 的Java(TM)SE运行时环境(建立1.6.0_22-B04) 爪哇热点(TM)64位服务器VM(构建17.1-B03,混合模式)
我得到一个空的枚举
随着 Java版本 “1.5.0” 的Java(TM)2运行环境,标准版(建设pxi32devifx-20100511a(SR11 FP2)) IBM J9 VM(构建2.3,J2RE 1.5.0 IBM J9 2.3 Linux x86-32 j9vmx i3223ifx-20100510(JIT已启用) J9VM - 20100509_57823_lHdSMr JIT - 20091016_1845ifx7_r8 GC - 20091026_AA) JCL - 20100511a
我能够得到所有的别名。
如何使用Sun/Oracle JDK6检索所有商店pkcs12别名?
感谢
据我所知,keystore在不同的JVM实现中不是二进制兼容的。 (即SUN Java vs IBM Java)。我不认为这与1.5 vs 1.6 – laher 2011-05-04 12:36:07
哪个SecurityProvider在两种情况下提供商店('Keystore.getProvider()')有关? – martijno 2012-06-26 13:46:43