Buenas, Estoy realizando unas pruebas de concepto de CryptoApplet y no consigo listar un certificado almacenado en una tarjeta criptográfica bajo Firefox.
Estoy utilizando; - la última versión de pruebas del applet (2.1.0) http://projectestic.uji.es/pr/cryptoapplet/samples/v2.1.0/test.html - Una tarjeta criptográfica Izenpe (funcioinal, lo he probado bajo IE6 satisfactoriamente) - Firefox 3.6.13 - JRE 1.6_20 - De momento estoy intentando cargar el driver sin tenerlo asociando en el almacén del Firefox como dispositivo de seguridad por si pudiera dar problemas, es decir lo cargo desde el propio Applet. _______ Primero da la siguiente excepción <pre> DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.JSCommands [16:41:41,600] - New access to browser window from Applet DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.SignatureApplet [16:41:41,697] - Nimbus Look&Feel loaded DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [16:41:41,719] - Recover JavaScript member: navigator DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [16:41:41,722] - Recover JavaScript member: userAgent DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [16:41:41,724] - Detected user agent mozilla/5.0 (x11; u; linux i686; es-es; rv:1.9.2.13) gecko/20101206 ubuntu/10.04 (lucid) firefox/3.6.13 DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.AppHandler [16:41:41,724] - Navigator variable set to MOZILLA Borrar antememoria del cargador de clases .... terminado. _pk11LibPath: /usr/lib/nss/libsoftokn3.so DEBUG thread applet-es.uji.security.ui.applet.SignatureApplet-1 es.uji.security.ui.applet.SignatureApplet [16:41:42,525] - Call JavaScript method: onInitOk DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.AppHandler [16:41:49,280] - Setting signOutputFormat to es.uji.security.crypto.raw.RawSignatureFactory DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.AppHandler [16:41:50,101] - Setting inputDataEncoding to PLAIN DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.AppHandler [16:41:50,108] - Setting inputDataEncoding to PLAIN Obtenido path /usr/lib/opensc-pkcs11.so DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.keystore.dnie.Dnie [16:41:52,830] - DNIe is not inserted or it can not be loaded DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.JTreeCertificateBuilder [16:41:52,941] - Building certificate tree DEBUG Applet 1 LiveConnect Worker Thread es.uji.security.ui.applet.SignatureApplet [16:41:53,110] - Call JavaScript method: onWindowShow You chose to open this file: /usr/lib/opensc-pkcs11.so _pk11LibPath: /usr/lib/opensc-pkcs11.so PKCS11 actionPerformed() java.security.KeyStoreException: PKCS11 not found at java.security.KeyStore.getInstance(KeyStore.java:676) at es.uji.security.keystore.pkcs11.PKCS11KeyStore.load(PKCS11KeyStore.java:97) at es.uji.security.keystore.pkcs11.PKCS11KeyStore.load(PKCS11KeyStore.java:78) at es.uji.security.ui.applet.EventActionHandler$7.actionPerformed(EventActionHandler.java:319) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.menuDragMouseReleased(BasicMenuItemUI.java:1327) at javax.swing.JMenuItem.fireMenuDragMouseReleased(JMenuItem.java:568) at javax.swing.JMenuItem.processMenuDragMouseEvent(JMenuItem.java:465) at javax.swing.JMenuItem.processMouseEvent(JMenuItem.java:411) at javax.swing.MenuSelectionManager.processMouseEvent(MenuSelectionManager.java:305) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266) at java.awt.Component.processMouseEvent(Component.java:6267) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6032) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Caused by: java.security.NoSuchAlgorithmException: no such algorithm: PKCS11 for provider SunPKCS11-USER-PKCS11 at sun.security.jca.GetInstance.getService(GetInstance.java:83) at sun.security.jca.GetInstance.getInstance(GetInstance.java:202) at java.security.Security.getImpl(Security.java:688) at java.security.KeyStore.getInstance(KeyStore.java:673) ... 35 more </pre> Por lo que he añadido el proveedor de SunPKCS11 al 'java.security' de la VM. <pre> security.provider.9=sun.security.pkcs11.SunPKCS11 </pre> Aun así, al hacer la prueba me pide el fichero de configuración que no se carga por código <pre> You chose to open this file: /usr/lib/opensc-pkcs11.so _pk11LibPath: /usr/lib/opensc-pkcs11.so PKCS11 java.security.ProviderException: SunPKCS11 requires configuration file argument at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:81) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at sun.security.jca.ProviderConfig$3.run(ProviderConfig.java:240) at java.security.AccessController.doPrivileged(Native Method) at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:225) at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:205) at sun.security.jca.ProviderList.loadAll(ProviderList.java:264) at sun.security.jca.ProviderList.removeInvalid(ProviderList.java:281) at sun.security.jca.Providers.getFullProviderList(Providers.java:158) at java.security.Security.insertProviderAt(Security.java:325) at java.security.Security.addProvider(Security.java:372) at es.uji.security.keystore.pkcs11.PKCS11KeyStore.load(PKCS11KeyStore.java:96) at es.uji.security.keystore.pkcs11.PKCS11KeyStore.load(PKCS11KeyStore.java:78) at es.uji.security.ui.applet.EventActionHandler$7.actionPerformed(EventActionHandler.java:319) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.menuDragMouseReleased(BasicMenuItemUI.java:1327) at javax.swing.JMenuItem.fireMenuDragMouseReleased(JMenuItem.java:568) at javax.swing.JMenuItem.processMenuDragMouseEvent(JMenuItem.java:465) at javax.swing.JMenuItem.processMouseEvent(JMenuItem.java:411) at javax.swing.MenuSelectionManager.processMouseEvent(MenuSelectionManager.java:305) at javax.swing.plaf.basic.BasicPopupMenuUI$MouseGrabber.eventDispatched(BasicPopupMenuUI.java:807) at java.awt.Toolkit$SelectiveAWTEventListener.eventDispatched(Toolkit.java:2353) at java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2245) at java.awt.Toolkit.notifyAWTEventListeners(Toolkit.java:2203) at java.awt.Component.dispatchEventImpl(Component.java:4528) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) </pre> Mirando el codigo fuente veo que realizais la carga del proveedor PKCS11 de forma manual, pero no introducís configuración. De todas formas he realizado una prueba a mano, cargando el PKCS11Keystore e invocando el método #load con y sin fichero de configuración, además del PIN y me lee correctamente la tarjeta. <pre> PKCS11KeyStore pkStore= new PKCS11KeyStore("/usr/lib/opensc-pkcs11.so"); pkStore.load(configIS, "1111".toCharArray()); pkStore.load("1111".toCharArray()); ArrayList<String> aliases = Collections.list(pkStore.aliases()); System.out.println("Available aliases: " + aliases); </pre> __________ Como he leído que en pruebas que habéis realizado vosotros os ha ido todo bien, me podrías indicar en qué contexto funciona la lectura de certificados en tarjetas criptográficas? Versión de firefox, jre y tipo de smartcard? ____ Muchas gracias, Irune Prado ----------------------------------------- _______________________________________________ CryptoApplet mailing list [email protected] http://llistes.uji.es/mailman/listinfo/cryptoapplet
