我对KeyStore.aliases()的枚举返回值有疑问;
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版本&#34; 1.6.0_22&#34; Java(TM)SE运行时环境(版本1.6.0_22-b04) Java HotSpot(TM)64位服务器VM(版本17.1-b03,混合模式)
我得到一个空的枚举器
使用 java版&#34; 1.5.0&#34; Java(TM)2运行时环境,标准版(build pxi32devifx-20100511a(SR11 FP2)) IBM J9 VM(build 2.3,J2RE 1.5.0 IBM J9 2.3 Linux x86-32 j9vmxi3223ifx-20100510(已启用JIT) J9VM - 20100509_57823_lHdSMr JIT - 20091016_1845ifx7_r8 GC - 20091026_AA) JCL - 20100511a
我能够获得所有别名。
如何使用Sun / Oracle JDK6检索所有商店pkcs12别名?
由于
答案 0 :(得分:0)
您的代码似乎没有任何问题,我认为PKCS#12密钥库应该可以在所有JRE的所有版本中读取。
您是否尝试使用OpenSSL验证商店?
答案 1 :(得分:0)
这是答案:
http://www-01.ibm.com/support/docview.wss?uid=swg1IZ77005
-
问题的结论
这个缺陷将在以下方面得到修复:
1.4.2 SR14
5.0.0 SR12
6.0.0 SR9
修改了PKCS SafeContents.getSafeBags( )
方法以检测SafeBag数组何时为空并返回空的SafeBag数组。该方法的PKCS调用者准备处理空的SafeBag数组。