Buenas Paul, Gracias por el consejo. La prueba la quería hacer haciendo uso del applet que proporcionáis para la verisón 2.1.0, sin tener que montar nada. De todas formas el driver que se utiliza para cargar la tarjeta Izenpe sigue siendo opensc, en la misma ubicación que el dnie por lo que no debería haber ningún problema como dices. ____
Al final he conseguido solucionar el problema instalando el último paquete 'dni-opensc' (1.4.8-1). He mirado el contenido del archivo apt (.deb) y no he visto nada relevante y genérico como para que afecte a opensc pero el caso es que funciona. Si cargo el driver desde el applet me lee correctamente tarjetas dnie como Izenpe. ____ Ahora estoy intentado cargarlas mediante el almacén de firefox, es decir, cargando previamente la tarjeta mediante el dispositivo de seguridad. Cuando voy a ver los certificados en el Firefox se me pide el PIN para el certificado y lo visualizo correctamente. El problema viene cuando el applet intenta cargar la lista de certificados cuando se inicializa, se queda tostado hasta que saco la tarjeta del lector. He esperado un tiempo suficiente pensando que igual es que el acceso es más lento, pero se sigue quedando bloqueado y una vez que saco y reinserto la tarjeta no me detecta ningún certificado. Voy a ver si hago pruebas mirando las clases MozillaKeyStoreTest y MozillaTest que proveéis en uji-test, a ver si me familiarizo más con el proyecto nss. ¿Me podríais dar algún consejo? Gracias por la rápida respuesta. Irune Prado ----------------------------------------- ----- Mensaje original ----- De: "paul santapau" <[email protected]> Para: "Llista de correu per al CryptoApplet" <[email protected]> Enviados: Martes, 28 de Diciembre 2010 9:45:38 Asunto: Re: [CryptoApplet] pkcs#11 en Firefox (v2.1.0) Hola Irune, Las tarjetas que más hemos probado desde la UJI son ek DNIe y la emitida por Sermepa. No disponemos de tarjetas de Izenpe para probar, aunque en un principio debería funcionar correctamente. Existe un forma de pre-inicializar la configuración desde ujiCrypto.conf del paquete ujiConfig, si abres ese fichero verás que al final esta la configuración de los módulos pkcs#11 que el applet debe intentar cargar al desplegarse en el cliente: 119 # 120 # PKCS11 Devices 121 # 122 123 cryptoapplet.devices=dnie,sermepa 124 125 cryptoapplet.devices.dnie.name =DNIe 126 cryptoapplet.devices.dnie.libraries.linux=/usr/lib/opensc-pkcs11.so,/usr/local/lib/opensc-pkcs11.so,/lib/opensc-pkcs11.so 127 cryptoapplet.devices.dnie.libraries.windows=c:\\windows\\system32\\UsrPkcs11.dll 128 129 cryptoapplet.devices.sermepa.name =Sermepa 130 cryptoapplet.devices.sermepa.libraries.windows=c:\\windows\\system32\\AdvantisPKCS11.dll Puedes probar a establecerlo ahí. Un Saludo. El 27 de diciembre de 2010 14:22, Irune Prado Alberdi < [email protected] > escribió: 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 -- Paúl Santapau Nebot http://es.linkedin.com/pub/paul-santapau/4/53a/a99 Twitter: @psantapau _______________________________________________ CryptoApplet mailing list [email protected] http://llistes.uji.es/mailman/listinfo/cryptoapplet _______________________________________________ CryptoApplet mailing list [email protected] http://llistes.uji.es/mailman/listinfo/cryptoapplet
