Arangí en entornos cliente

Java 1.7.0 Update 45

La aparición de Java 1.7.0 Update 45 ha hecho que los usuarios de aplicaciones que usan Arangí en entornos cliente se vean sorprendidos por mensajes en los que se duda de la seguridad de dichas aplicaciones. Esta nueva ventana aparece porque Java no confía en los certificados firmantes. Hay 2 certificados firmantes de ficheros .jar:

  • El de Bouncy Castle: este certificado se encuentra caducado en la versión que siempre ha utilizado Arangí (Bouncy Castle 1.45) lo que genera bastantes problemas. La primera versión de Bouncy firmada con un certificado no caducado es la 1.48, que es completamente diferente (incompatible) a la que se había utilizdo en Arangí. Por ello se ha reprogramado Arangí para que funcione con la versión 1.49 de Bouncy Castle (Arangí 1.4.0). Como a esta versión le falta uno de los metatags que se necesitan en el manifest, para applets y JNLP se puede utilizar una de las primeras versiones beta de Bouncy Castle 1.50.
  • El de la ACCV: el certificado es válido y correcto y su validez dependerá de que Java sea capaz de acceder a los certificados raíz de la Agencia de Tecnología y Certificación Electrónica. Dependiendo del navegador en el que se ejecute el applet se pueden dar dos situaciones:
    • Firefox: el plugin de Java trabaja sólo con el almacén de certificados de Java en el que no están los certificados raíz de la Agencia de Tecnología y Certificación Electrónica. Dichos certificados se encuentran en estado de revisión por Oracle y se espera que sean añadidos a las distribuciones de Java en próximas versiones.
    • Internet Explorer: el plugin de Java se integra muy bien con el almacén de claves de Internet Explorer, donde ya están instalados los certificados raíz de la Agencia de Tecnología y Certificación Electrónica.

Además, es necesario que los jars incluidos en la aplicación o applet incluyan varios metatags en el fichero manifest.mf:

  • Trusted-Library: true (necesario para versiones anteriores de Java)
  • Permissions: all-permissions
  • Codebase: *
  • Application-Name: nombre de mi aplicación

Cliente de Arangí

El Cliente de Arangí es un recubrimiento de las librerías de Arangí que permite la firma y la validación en cliente. Se muestra aquí a modo de ejemplo ya que la Agencia de Tecnología y Certificación Electrónica no va a realizar un mantenimiento del Cliente ante futuras nuevas versiones de Java, navegadores y sistemas operativos. Para ello se facilita el código fuente del proyecto desde el siguiente enlace:

arangi_client_src-1.4.0.zip

En la carpeta 'dist' se encuentra la última distribución, con los jars modificados y refirmados de acuerdo a los requisitos de Java 1.7.0 Update 45.

El proceso de firma comienza con la búsqueda de todos los certificados instalados en el cliente: almacén de Windows, almacén de Firefox y tarjetas PKCS#11. El resultado de este proceso se le muestra al usuario para que elija con qué certificado desea realizar la firma. De esta forma se eliminan los problemas de utilizar directamente las clases de Arangí para tratar con los almacenes de los navegadores.

La arquitectura del Cliente se puede ver en el siguiente esquema.

Arquitectura del cliente de Arangí

Como se puede observar, el recubrimiento de las librerías de Arangí se divide en dos partes:

  • Cliente Arangí: son las clases Java que permiten realizar todas las funciones. En especial la clase es.accv.arangi.client.ArangiClient ofrece todos los métodos para realizar firmas y validaciones. Si lo que se quiere es realizar firma cliente en una aplicación propia que incluya al Cliente de Arangí lo lógico sería realizar las llamadas que sean necesarias a esta clase.
  • Applets: se trata de dos clases que extienden javax.swing.JApplet y que permiten utilizar directamente el Cliente de Arangí como applets dentro de una página web. Las clases son es.accv.arangi.client.ArangiClientSignatureApplet y es.accv.arangi.client.ArangiClientValidationApplet. La distribución del Cliente de Arangí incluye páginas de ejemplo y un manual sobre cómo integrar los applets dentro de una aplicación web.

La generación de firmas ha sido probada en los siguientes entornos:

  • Almacén de claves de Windows XP, Windows Vista y Windows 7. Los navegadores utilizados han sido Internet Explorer y Chrome.
  • Almacén de claves de Mozilla en Windows XP, Windows Vista, Windows 7, Ubuntu y Mac OS X. Aunque sólo ha sido probado en Ubuntu, debería funcionar en el resto de distribuciones de Linux.

Documentación: arangi_client.pdf