2016-07-21 4 views
1

ログインせずにスマートカードからX509Certificateのリストを取得したい(PINなし)。スマートカードからX509Certificatesを認証なしで取得する

String conf = args[0]; 
    Provider p = new sun.security.pkcs11.SunPKCS11(conf); 
    Security.addProvider(p); 

    KeyStore ks = KeyStore.getInstance("PKCS11"); 

    1) ks.load(null, null); 
    2) ks.load(null, "".toCharArray()); 

最初の試験(1)本のStackTraceで失敗:

私のコードは、以下である

Exception in thread "main" java.io.IOException: load failed 
    at sun.security.pkcs11.P11KeyStore.engineLoad(P11KeyStore.java:763) 
    at java.security.KeyStore.load(Unknown Source) 
    at TestPKCS11.main(TestPKCS11.java:29) 
Caused by: javax.security.auth.login.LoginException: no password provided, and n 
o callback handler available for retrieving password 
     at sun.security.pkcs11.SunPKCS11.login(SunPKCS11.java:1184) 
     at sun.security.pkcs11.P11KeyStore.login(P11KeyStore.java:849) 
     at sun.security.pkcs11.P11KeyStore.engineLoad(P11KeyStore.java:751) 

第(2)で失敗:

Exception in thread "main" java.io.IOException: load failed 
    at sun.security.pkcs11.P11KeyStore.engineLoad(P11KeyStore.java:763) 
    at java.security.KeyStore.load(Unknown Source) 
    at TestPKCS11.main(TestPKCS11.java:30) 
Caused by: javax.security.auth.login.LoginException 
     at sun.security.pkcs11.SunPKCS11.login(SunPKCS11.java:1238) 
     at sun.security.pkcs11.P11KeyStore.login(P11KeyStore.java:849) 
     at sun.security.pkcs11.P11KeyStore.engineLoad(P11KeyStore.java:753) 
     ... 2 more 
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_PIN_INVALID 
     at sun.security.pkcs11.wrapper.PKCS11.C_Login(Native Method) 
     at sun.security.pkcs11.SunPKCS11.login(SunPKCS11.java:1222) 

私の設定は以下の通りです:

name=SmartCard 
slotListIndex = 0 
library=C:\gclib.dll 
attributes(*,CKO_PUBLIC_KEY,*)={ CKA_TOKEN=true } 

NB:証明書を表示するためにPINを必要としないローカルツール(Classic Client ToolBox)があります。

答えて

0

Sunのプロバイダは、ログインしたいかどうかに関係なく、常にログインと呼ぶように見えます。率直に言えば、唯一の選択肢はアプローチを変更することである可能性があります。他の方法でPKCS#11デバイスにアクセスします(たとえば、SecureBlackboxにこのようなメカニズムがあります)。

一方、デバイスにログインせずに情報を取得する可能性は、情報漏洩の一種であり、リストや証明書自体を入手する可能性は特定のデバイスによって異なります。あなたのデバイスで動作するものは、他のデバイスでは動作しないかもしれません。

関連する問題