2010-07-21 3 views
4

Я пытаюсь получить доступ к смарт-карте в Linux-системе на виртуальной машине. Устройство USB отображается на виртуальную машину и может быть перечислено через lsusb (ID 076b: 3021 OmniKey AG CardMan 3121). Я могу получить доступ к смарт-карте через pkcs11-tool и pkcs15-tool. Также firefox может получить доступ к токену через библиотеку /usr/lib/opensc-pkcs11.so.Как получить доступ к смарт-карте в Java на Linux?

Но когда я пытаюсь получить доступ к смарт-карте с Java, возвращается пустое хранилище ключей. Я использую следующую конфигурацию для поставщика sun.security.pkcs11.SunPKCS11.

name = PKCS11Test 
library = /usr/lib/opensc-pkcs11.so 
slot = 0 

При использовании другого слота (я пробовал слот 0-15), я получаю ошибки CKR_PIN_INCORRECT или «PKCS11 не найден». В моих тестах я загружаю в хранилище ключей, как это:

char[] pin = "123456".toCharArray(); 
KeyStore ks = KeyStore.getInstance("PKCS11", p); 
ks.load(null, pin); 

С другой стороны, PKCS11-инструмент возвращаемой для слота 0:

Slot 0 CCID Compatible
token model: PKCS#15 emulated

Как Java кажется, для доступа к карте на слоте 0 (по крайней мере, ошибка не возвращается), я, вероятно, делаю что-то еще неправильное в доступе к хранилищу ключей. Как я могу получить доступ к закрытому ключу?

ответ

0

Хорошо, я нашел решение.

Почему-то слот 0 кажется пустым вообще. Слоты 1 и 2 имеют секретные ключи, но защищены разными (локальными) ПИН-кодом. С помощью инструмента netkey я смог установить локальный PIN-код на глобальный PIN-код. После этого доступ к карточке работал без недостатка.

+0

Вы можете установить «plug_and_play = false» в файле конфигурации, чтобы отключить функцию hotplug. Или не полагайтесь на индексы слотов PKCS №11 и вместо этого искать все слоты (иногда сложно). –

+0

Спасибо за подсказку! С «конфигурационным файлом» вы имеете в виду openc.conf, не так ли? Мы перешли на другую смарт-карту, которая больше не поддерживается opensc. Поэтому мне нужно было найти новое решение. К счастью, он работает на данный момент. –

Смежные вопросы