JDK 1.6与IBM 1.5上的java.security.Keystore别名



我对KeyStore.aliases()的enum返回值有问题;

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运行环境(build 1.6.0_22-b04)Java HotSpot(TM) 64位Server VM (build 17.1-b03, mixed mode)

我得到一个空枚举数

,Java版本"1.5.0"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_lHdSMrJIT - 20091016_1845ifx7_r8Gc - 20091026_aa)JCL - 20100511a

我可以得到所有的别名。

如何检索所有的存储pkcs12别名与Sun/Oracle JDK6?

谢谢

对我来说,你的代码似乎没有任何问题,我本以为pkcs# 12密钥库应该在所有JREs的所有版本中都是可读的。

你试过使用OpenSSL来验证你的商店吗?

答案如下:

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数组。

最新更新