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

Responder a