所以这就是我想要做的。我有一个带有一些证书的硬件令牌,我正在编写一个Java应用程序来尝试访问这些证书。我在jre6中使用了SunPKCS11库来获取Windows 32位机器。这是我访问证书的一小部分示例:
String configName = "pkcs.cnf"
String PIN = "123456";
Provider p = new sun.security.pkcs11.SunPKCS11(configName);
Security.addProvider(p);
KeyStore keyStore = KeyStore.getInstance("PKCS11");
char[] pin = PIN.toCharArray();
keyStore.load(null, pin);
它很棒,我能够获得证书和一切。现在我试图在64位机器上做同样的事情。但是我试图使用64位jre6库,而且缺少SunPKCS11 jar文件(located in {java.home}/lib/ext
。因此,我无法创建SunPKCS11对象。我的问题是,我现在该怎么办?如何使用64位Java库访问令牌上的证书?是否有人为此类任务编写了64位包装器?
答案 0 :(得分:4)
PKCS11支持未实现,因为没有办法测试该库(不知何故,无论如何)。
但是在Java 8中已经改变了。从J8b49开始,包含64位版本。 看到: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6880559
答案 1 :(得分:1)
假设你的{java.home}指向jre6,sunpkcs11.jar位于{java.home} / lib / ext; 如果你的{java.home}指向jdk1.6,则sunpkcs11.jar位于{java.home} / jre / lib / ext; 我已经针对新安装的jdk和jre进行了测试。 请验证您的安装。
已编辑(总结评论)
在java 64位版本中,pkcs11不可用。