2010-07-21 3 views
4

VM의 Linux 시스템에서 스마트 카드에 액세스하려고합니다. USB 장치는 VM에 매핑되며 lsusb (ID 076b : 3021 OmniKey AG CardMan 3121)를 통해 나열 될 수 있습니다. 필자는 pkcs11-tool과 pkcs15-tool을 통해 스마트 카드에 액세스 할 수 있습니다. 또한 파이어 폭스는 /usr/lib/opensc-pkcs11.so 라이브러리를 통해 토큰에 액세스 할 수 있습니다.Linux에서 Java의 스마트 카드에 액세스하는 방법은 무엇입니까?

그러나 Java에서 스마트 카드에 액세스하려고하면 빈 키 스토어가 반환됩니다. sun.security.pkcs11.SunPKCS11 공급자에 대해 다음 구성을 사용하고 있습니다.

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

다른 슬롯을 사용

내가 CKR_PIN_INCORRECT 오류 또는 "을 (를) 찾을 수 없습니다 PKCS11"을 얻을, (I 슬롯 0-15을 시도). PKCS11-도구가 슬롯 0에 대해 반환 반면에

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

: 내 테스트에서이 같은 키 스토어를로드하고있어

Slot 0 CCID Compatible
token model: PKCS#15 emulated

자바 슬롯에 카드를 액세스 할 것으로 0 (적어도 오류가 반환되지 않음), 키 저장소에 액세스하는 데 잘못된 다른 작업을 수행하고 있습니다. 개인 키에 어떻게 액세스 할 수 있습니까?

답변

0

좋아, 해결책을 찾았습니다.

왜 슬롯 0은 전혀 비어있는 것 같습니다. 슬롯 1과 2에는 개인 키가 있지만 다른 (로컬) PIN으로 보호되어 있습니다. netkey-tool을 사용하여 로컬 PIN을 전역 PIN으로 설정할 수있었습니다. 그 후 카드에 액세스하면 결함없이 작동했습니다.

+0

구성 파일에서 "plug_and_play = false"를 설정하여 핫 플러그 ​​기능을 비활성화 할 수 있습니다. 또는 PKCS # 11 슬롯 색인에 의존하지 말고 모든 슬롯을 검색하십시오 (어려운 경우도 있습니다 ...) –

+0

힌트를 보내 주셔서 감사합니다! "설정 파일"을 사용하면 opensc.conf를 의미합니까? 우리는 opensc에서 더 이상 지원하지 않는 다른 스마트 카드로 이동했습니다. 그래서 새로운 솔루션을 찾아야했습니다. 다행히도 지금은 효과가 있습니다. –

관련 문제