java keytool с поставщиком opensc pkcs # 11 работает только с включенной опцией отладки

У меня установлена ​​последняя версия opensc 0.12.2, работающая на ubuntu 11.10 с OpenJDK ( java версия "1.6.0_22")

Я могу прочитать свою смарт-карту (Feitian ePass PKI) с помощью

pkcs15-tool --dump

Теперь я пытаюсь использовать свою смарт-карту с помощью keytool:

keytool 
   -providerClass sun.security.pkcs11.SunPKCS11 \
   -providerArg /etc/opensc/opensc-java.cfg \
   -keystore NONE -storetype PKCS11 -list 

, что приводит к ошибке:

keytool error: java.security.KeyStoreException: PKCS11 not found
java.security.KeyStoreException: PKCS11 not found
    at java.security.KeyStore.getInstance(KeyStore.java:603)
    at sun.security.tools.KeyTool.doCommands(KeyTool.java:621)
    at sun.security.tools.KeyTool.run(KeyTool.java:194)
    at sun.security.tools.KeyTool.main(KeyTool.java:188)
Caused by: java.security.NoSuchAlgorithmException: PKCS11 KeyStore not available
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
    at java.security.Security.getImpl(Security.java:696)
    at java.security.KeyStore.getInstance(KeyStore.java:600)
    ... 3 more

Когда я запустите ту же команду с включенными параметрами отладки, например:

keytool 
   -providerClass sun.security.pkcs11.SunPKCS11 \
   -providerArg /etc/opensc/opensc-java.cfg \
   -keystore NONE -storetype PKCS11 -list \
   -J-Djava.security.debug=sunpkcs11

она внезапно сработает:

... debug infos ...
Enter keystore password:  
sunpkcs11: login succeeded

Keystore type: PKCS11
Keystore provider: SunPKCS11-OpenSC

Your keystore contains 2 entries
...
Certificate fingerprint (MD5): ...
...
Certificate fingerprint (MD5): ...

То же поведение, когда я настраиваю ее статически:

$ grep opensc /usr/lib/jvm/java-6-openjdk/jre/lib/security/java.security
security.provider.7=sun.security.pkcs11.SunPKCS11 /etc/opensc/opensc-java.cfg

и моя конфигурация

$ cat /etc/opensc/opensc-java.cfg
name = OpenSC
description = SunPKCS11 w/ OpenSC Smart card Framework
library = /usr/lib/opensc-pkcs11.so

Полагаю, это как-то связано с openjdk или внутренний пакет sun.security , который обычно не может использоваться, потому что это внутренний пакет. Активация параметров отладки может активировать этот внутренний пакет?

11
задан Janning 23 November 2011 в 18:14
поделиться