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

Responder a