Доступ к аппаратному токену PKCS11 на 64-битной машине - PullRequest
8 голосов
/ 09 ноября 2011

Так вот что я пытаюсь сделать.У меня есть аппаратный токен с некоторыми сертификатами, и я пишу Java-приложение для доступа к этим сертификатам.Я использовал библиотеку SunPKCS11 в jre6 для 32-битной машины Windows.Вот небольшой пример того, как я получаю доступ к сертификатам:

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, и в ней отсутствует файл jar SunPKCS11 (located in {java.home}/lib/ext.Из-за этого я не могу создать объект SunPKCS11.Мой вопрос к вам, что мне теперь делать?Как я могу получить доступ к сертификатам на токене, используя 64-битные библиотеки Java?Кто-то написал 64-битную оболочку для такой задачи?

Ответы [ 2 ]

4 голосов
/ 25 марта 2013

Поддержка PKCS11 не была реализована, поскольку не было возможности протестировать эту библиотеку (каким-либо образом, как угодно).

Однако в Java 8 это изменилось.Начиная с J8b49 включена 64-битная версия.Смотри: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6880559

1 голос
/ 09 ноября 2011

Если ваши {java.home} указывают на jre6, sunpkcs11.jar находится в {java.home} / lib / ext;Если ваш {java.home} указывает на jdk1.6, sunpkcs11.jar находится в {java.home} / jre / lib / ext;Я протестировал его на недавно установленных jdk и jre.Пожалуйста, проверьте вашу установку.

РЕДАКТИРОВАНИЕ (обобщение комментариев)В 64-разрядной версии Java pkcs11 недоступен.

...