在64位计算机上访问硬件PKCS11令牌

所以这就是我想要做的。 我有一个硬件令牌,上面有一些证书,我正在编写一个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位包装器?

没有实现PKCS11支持,因为没有办法测试该库(不知何故,无论如何)。

不过,Java 8已经发生了变化。 从J8b49开始,包含64位版本。 请参阅: http : //bugs.sun.com/bugdatabase/view_bug.do?video_id = 6880559

假设你的{java.home}指向jre6,sunpkcs11.jar位于{java.home} / lib / ext; 如果你的{java.home}指向jdk1.6,则sunpkcs11.jar位于{java.home} / jre / lib / ext; 我已经对新安装的jdk和jre进行了测试。 请validation您的安装。

编辑 (总结评论)
在java 64位版本中,pkcs11不可用。