: AutoFirma Java Web Start Manuel.Berenguel@ual.es Paco.Garcia@ual.es Portada Enrique.Veasca@gmail.com Universidad de Almería
Indice La firma con applets AutoFirma: Limitaciones Soluciones Integración 2
Un mundo sin applets El 1 de septiembre de 2015 Google eliminó el soporte de complementos NPAPI en Chrome. Firefox lo hará a finales de 2016. Oracle dejará de dar soporte a los applets Java. 3
Matriz de compatibilidad de Miniapplet 1.4 (*) (*) Fuente: https://ws024.juntadeandalucia.es/ae/descargar/4795 4
Solución del MINHAP: AutoFirma Es una solución independiente del navegador para firma en entornos de escritorio. Se invoca mediante protocolo: afirma://sign?op=sign&id=9dyk67akbwgvpom7sdhi &key=73065939&stservlet=http://admindes5.ual.es:8 082/pfirma/StorageService&format=CAdES&algorith m=sha256withrsa&dat=ia== 5
Limitaciones de AutoFirma Requiere una instalación previa No soporta firma masiva 6
Propuesta: AutoFirma JWS Cómo podemos llevarnos AutoFirma al Servidor? Encapsular AutoFirma en un Java Web Start (JWS). 7
Qué es un Java Web Start? Local Servidor Programa.jnlp 8
Ventajas JWS No requiere de instalaciones previas. Facilita la actualización de AutoFirma. 9
Transformar AutoFirma en un JWS Es necesario: El JAR de AutoFirma Un archivo JNLP 10
Paso de parámetros a AutoFirma Parámetros datos a firmar operación a realizar Dentro del archivo JNLP -> JNLP dinámico 11
Generación dinámica de JNLP Servlet que recibe como parámetro la url de invocación a AutoFirma Descarga un archivo JNLP para continuar con el proceso de firma. http://servidor.ual.es/autofirma/autofirma.jnlp?cadenafirma=afirma %3A%2F%2Fsign%3Fop%3Dsign%26id%3D9dyk67aKbWgVpom7 sdhi%26key%3d73065939%26stservlet%3dhttp%3a%2f%2fad mindes5.ual.es%3a8082%2fpfirma%2fstorageservice%26format %3DCAdES%26algorithm%3DSHA256withRSA%26dat%3DIA%3 D%3D%0A 12
Demo 13
Inconvenientes de AutoFirma JWS Hasta la versión JRE 8u73 Se descarga un fichero por petición El usuario tiene que abrir el fichero 14
Cómo evitar la descarga? Java Web Start por protocolo Local Servidor Ya no hay que descargar ficheros! JRE 8.74 15
Cómo evitar la descarga? http://servidor.ual.es/autofirma/autofirma.jnlp?cadenafirma=afirma%3 A%2F%2Fsign%3Fop%3Dsign%26id%3D9dyk67aKbWgVpom7sdHI %26key%3D73065939%26stservlet%3Dhttp%3A%2F%2Fadmindes5.ual.es%3A8082%2Fpfirma%2FStorageService%26format%3DCAdE S%26algorithm%3DSHA256withRSA%26dat%3DIA%3D%3D%0A jnlp://servidor.ual.es/autofirma/autofirma.jnlp?cadenafirma=afirma%3 A%2F%2Fsign%3Fop%3Dsign%26id%3D9dyk67aKbWgVpom7sdHI %26key%3D73065939%26stservlet%3Dhttp%3A%2F%2Fadmindes5.ual.es%3A8082%2Fpfirma%2FStorageService%26format%3DCAdE S%26algorithm%3DSHA256withRSA%26dat%3DIA%3D%3D%0A 16
AutoFirma JWS 1.4.1 (Servidores Intermedios) JNLPServer 6. Almacenamiento de la firma 2. Descarga JNLP con parámetros 3. Descarga / Actualización Autofirma 5. Firma 1. Invocación de JNLP:// con parámetros 4. Lanzamiento Autofirma con parámetros Auto StorageService / RetrieveService 17
AutoFirma JWS 1.4.2 (Sockets) JNLPServer 6. Almacenamiento de la firma 2. Descarga JNLP con parámetros 3. Descarga / Actualización Autofirma 5. Firma 1. Invocación de JNLP:// con parámetros 4. Lanzamiento Autofirma con parámetros Comunicación Directa Auto 18
Cómo hacer que funcionen los sockets? No se ha lanzado el Configurador de AutoFirma Solución: AutoFirma JWS Configurador 19
Integración Cliente de Firma OS MiniApplet.js Applet Firma móvil AutoFirma 20
Integración Mismo documento de Integración del MinHAP Cliente de Firma OS JNLPServer MiniApplet.js Applet AutoFirma Firma móvil Pre instalado Fichero JNLP JNLP:// 21
Limitaciones de Autofirma Requiere una instalación previa No soporta firma masiva 22
Firma en bloque / Multifirma No permite más de una firma por petición. El usuario tiene que seleccionar el certificado tantas veces como firmas se quieran hacer. 23
Modificación firma masiva Modificación del método sign Entrada: array de peticiones de firma Salida: array de firmas. El objetivo es que los datos a firmar sean del tipo: OPERACION1;DATO1:OPERACION2;DATO2: :OPERACIONn;DATOn 24
Cambios Código Nuevas Funcionalidades Miniapplet.js Fichero JNLP Protocolo JNLP AutoFirma Configurador Firma masiva https://github.com/sticual https://github.com/ctt-gob-es/ 25
Matriz de compatibilidad de AutoFirma Windows 7 Windows 10 Linux Ubuntu Mac OS v10.11 v15.10 IExplorer v11 SI SI - - Firefox v41.0.2 SI SI SI Si Chrome v48 SI SI SI Si MS Edge v20 - SI - - Safari v9 - - - Si Es la misma de Autofirma 26
Matriz de compatibilidad de AutoFirma JWS IExplorer v11 Firefox v41.0.2 Chrome v48 Windows 7 Windows 10 Linux Ubuntu v15.10 Servidor Mac OS v10.11 Intermedio Sockets - - Servidor Intermedio Servidor Intermedio Sockets Sockets Servidor Intermedio Servidor Intermedio Servidor Intermedio Servidor Intermedio MS Edge v20 - Sockets - - Safari v9 Servidor Intermedio Sockets - Servidor Intermedio Es la misma de Autofirma 27
Demo 28
Integraciones actuales Integración con aplicaciones propias PortaFirmas U-Move Oficina Virtual 29
Puesta en producción Finales de abril: Piloto Problemas en Windows 7, Mac y Linux. Se opta por la opción de Servidores Intermedios. 20 de mayo: En producción. Problemas con Servidores Intermedios: En ciertas combinaciones de certificados y documentos el resultado de firma se truncaba. Mac: Problemas para abrir el fichero.jnlp Se crea un programa para asociar el protocolo jnlp con la máquina virtual Java. 30
Incidencias registradas 31
32
Caso de éxito ;-) 33
Contraportada Manuel.Berenguel@ual.es Paco.Garcia@ual.es Enrique.veasca@gmail.com 34