JDK 1.6 与 IBM 1.5 上的 java.security.Keystore 别名
我对 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版本“1.6.0_22” Java(TM) SE 运行时环境(版本 1.6.0_22-b04) Java HotSpot(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 j9vmxi3223ifx-20100510(启用 JIT) J9VM - 20100509_57823_lHdSMr 即时 - 20091016_1845ifx7_r8 GC-20091026_AA) JCL - 20100511a
我能够获取所有别名。
如何使用 Sun/Oracle JDK6 检索所有存储 pkcs12 别名?
谢谢
I've a problem with the enum return value of 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++;
}
With
Java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
I get an empty enumerator
With
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (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 enabled)
J9VM - 20100509_57823_lHdSMr
JIT - 20091016_1845ifx7_r8
GC - 20091026_AA)
JCL - 20100511a
I am able to get all the aliases.
How can I retrieve all the store pkcs12 aliases with Sun/Oracle JDK6?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对我来说,您的代码似乎没有任何问题,而且我认为 PKCS#12 密钥库应该在所有 JRE 的所有版本中都可读。
您是否尝试过使用 OpenSSL 来验证您的商店?
There doesn't appear to be anything wrong with your code to me, and I'd have thought that PKCS#12 keystores should be readable across all versions of all JREs.
Have you tried using OpenSSL to verify your store?
答案如下:
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 数组何时为 null 并返回空 SafeBag 数组。此方法的 PKCS 调用者准备处理空 SafeBag 数组。here's the answer:
http://www-01.ibm.com/support/docview.wss?uid=swg1IZ77005
--
Problem conclusion
This defect will be fixed in:
1.4.2 SR14
5.0.0 SR12
6.0.0 SR9
The
PKCS SafeContents.getSafeBags( )
method was modified to detect when the SafeBag array is null and to return an empty SafeBag array instead. PKCS callers of this method are prepared to handle an empty SafeBag array.