Sobre este documento #
El objetivo de este documento es el de definir la funcionalidad de la solución de firma electrónica y firma digital manuscrita ecoSignature Java Web Start (JWS de ahora en adelante) desde un entorno web (Browser) con firma de documento en local.
Adicionalmente, con el fin de facilitar la integración de ecoSignature Java Web Start Browser en diferentes arquitecturas, la solución se entrega dentro de un caso de uso.
Introducción #
Los requisitos mínimos del funcionamiento de ecoSignature JWS son:
- Parte servidora:
- TOMCAT 7 (java 1.6+WebService SOAP ó java 1.7+WebSocket).
- Apache (php).
- IIS Internet Information Services:
- Web Socket IIS 8 y .NET Framework 4.5.
- Web Service SOAP .NET Framework 3.5.
- Web Socket IIS 8 y .NET Framework 4.5.
- TOMCAT 7 (java 1.6+WebService SOAP ó java 1.7+WebSocket).
- Puesto cliente (PC de eFirma)
- Dispositivos hardware para captura biométrica: Wacom STU (430, 520, 530, 540), Wacom DTU (1031, 1141 (solo Windows)) y Pencil-Stylus (solo Windows).
- Puesto PC:
- Sistema operativo Windows 7 o superior.
- Sistema operativo Linux Ubuntu 14.04 32 ó 64 bits o superior. (Recomendable 16.04+ 64 bits).
- Sistema operativo Windows 7 o superior.
- Java 1.6+.
- Navegador:
- Con sistema operativo Windows:
- Con sistema operativo Windows:
- Dispositivos hardware para captura biométrica: Wacom STU (430, 520, 530, 540), Wacom DTU (1031, 1141 (solo Windows)) y Pencil-Stylus (solo Windows).
Recomendamos Google Chrome, Mozilla Firefox e Internet Explorer de 32 o 64 bits (IE10+).
Configuración mínima en Internet Explorer para:
- IE8+Uso de Web Service SOAP.
- IE9+Uso de visualizador previo de documento.
- IE10+Uso de WebSocket.
- con sistema operativo Linux:
Recomendamos Mozilla Firefox, Google Chrome/Chromium y Opera.
- Recomendamos instalación de drivers Wacom y para la invocación por protocolo ecoSignatureHelper (en Windows) o ELH (edatalia Linux Helper en Linux). (Ver apartado 3. Instalación de puesto local).
Para el correcto funcionamiento de la solución, para tabletas STU y DTU es necesario instalar los correspondientes drivers de Wacom (Ver documento Descargas de Drivers Wacom y DisplayLink).
Características de producto #
La solución ecoSignature JWS cuenta con una amplia colección de opciones de configuración que le aportan gran flexibilidad y le permiten ajustarse a cualquier flujo de trabajo:
- Permite el firmado en PC local de cualquier documento pdf.
- Fácilmente integrable.
- Más de 100 parámetros configurables para realizar el firmado.
- Necesidad de licenciamiento para su uso.
- Se puede trabajar con el documento pdf en binario o en base 64.
- Firmado de documentos de gran tamaño (el caso de uso permite hasta un tamaño de 100 Mb (en binario) por limitación en servidor). El límite de tamaño del documento pdf a firmar es configuración del servidor.
En base 64 la limitación la impone la tecnología JNLP (Java Network Launching Protocol) y es de 1Mb para el fichero generado. (Tamaño del pdf binario aproximadamente de tamaño máximo de 750Kb).
- Características de arquitectura de integración:
- Admite protocolo http o https.
- Dos posibilidades de integración en cuanto a visualización:
- Con previsualización de documentos a firmar y firmado. El usuario podrá interactuar con el posicionamiento y lanzamiento de la firma (caso de uso con visor).
- Sin previsualización de documentos a firmar y firmado. El usuario solo podrá realizar el lanzamiento de la firma (caso de uso simple).
- La comunicación entre ecoSignature JWS y la web se realiza mediante Web Service o Web Socket.
- Generación del jnlp de lanzamiento de ecoSignature JWS en servidor o en local.
- Posibilidad de lanzamiento del jnlp generado con uso o no de protocolo.
El uso de protocolo elimina la necesidad de descarga del jnlp y el lanzado posterior manualmente o la aceptación de plugin’s dependiendo del navegador utilizado.
- Envío de documento pdf firmado mediante POST o devolución en base 64 (solamente para Web Socket).
La opción “Pantalla táctil” permite firmar con el ratón. De esta forma se puede probar la funcionalidad sin necesidad de tabletas específicas.
- Se permiten dos tipos de firmado:
- Firma digital manuscrita.
- Firma digital convencional, mediante certificado electrónico, sin captura de rúbrica.
Por defecto, la firma se realiza mediante un certificado embebido en el propio JWS. En una instalación real se recomendaría introducir un certificado de la Entidad.
- El documento es firmado electrónicamente, en ambos tipos de firmado, mediante certificado (en software o hardware). Sigue el estándar PAdES, desde básico hasta firma longeva PAdES- XL.
- Sellado de tiempo en el momento de la firma.
- Validación del estado de revocación del certificado en el momento de la firma.
- Produce firmas digitales con algoritmo de resumen (hash) SHA2-512.
- Configuración de certificados de firma y cifrado de datos (archivo estático o en base 64).
- Posibilidad de firmado con un certificado local (instalado en CryptoAPI en Windows).
- Posibilidad de certificar la firma.
- Posibilidad de firmar documentos pdf con contraseña.
- Personalización de la ventana de captura de firma de ecoSignature JWS en el PC.
- Segunda ventana de captura de firma opcional para modo multimonitor.
- Configuración y personalización de plantillas (denominadas EBP’s), a nivel de PC y de tableta, para presentación de datos al usuario antes del firmado.
Comunicación entre ecoSignature JWS y plantillas EBP’s mediante variables configurables.
- Configuración de la dimensión de la rúbrica.
- Configuración de ubicación de la rúbrica. Se presentan tres tipos de posicionamiento:
- Posicionamiento manual: solo para integraciones con previsualización de documentos a firmar. El usuario puede mover/trasladar y redimensionar el widget o ventana de firma por la página del documento pdf.
- Posicionamiento fijo: definición de posición de coordenadas X e Y fija y del número de página de la firma en el documento pdf, cuando sabemos el lugar concreto en el que queremos que se firme.
- Posicionamiento flotante: definición de posición del widget por búsqueda de una cadena de caracteres, pudiendo introducirse un desfase en las coordenadas X e Y.
- Optimización en la descarga del documento pdf a firmar y alta velocidad de firmado.
- Introducción de texto personalizado en la rúbrica.
- Descarga y ejecución en local del documento pdf firmado.
- Descarga de JPG del grafo en local del documento pdf firmado.
- Integración con Virtual Channel Citrix (en Windows).
- Validación de documento firmado.
Entrega #
La solución ecoSignature JWS se entrega integrada en un caso de uso, cuyo zip presenta el siguiente formato en su nombre:
www_ecoSignatureJWS_Browser_Servidor_vy.y_xxxxxxxx
siendo:
- Servidor: “WAMP”, “TOMCAT” o “IIS” haciendo referencia al servidor de despliegue, dependiendo de la tecnología seleccionada PHP, Java o NET respectivamente.
- vy.y: versión.
- xxxxxxxx: fecha de lanzamiento.
Conceptos previos #
Java Web Start, JWS
JWS permite arrancar aplicaciones Java que se encuentran en un servidor web de aplicaciones, comprobando previamente si el cliente tiene la versión actualizada de dicha aplicación. Si no es así se descarga la última versión y se ejecuta en local.
Es la implementación de referencia de la especificación Java Network Launching Protocol (JNLP), desarrollada por Sun Microsystems (actualmente Oracle).
Lo más relevante de esta tecnología es que se asegura que una aplicación es distribuida siempre en su última versión.
WebService
Es un conjunto de aplicaciones o tecnologías con capacidad para interoperar en la Web. Estas tecnologías intercambian datos entre ellas con el fin de ofrecer unos servicios.
SOAP (Simple Object Access Protocol)
Es un protocolo que te permite la comunicación entre aplicaciones a través de mensajes por medio de Internet. Está basado en XML y es la base de los WebServices. Es independiente de la plataforma y del lenguaje.
WebSocket
Es una tecnología que permite a las aplicaciones web mantener una comunicación bidireccional (cliente/servidor) con procesos en el lado del servidor.
DeployJava.js
DeployJava es un javascript que se usa vía HTML para proceder al lanzado del fichero jnlp en el ordenador cliente. Es necesario que el navegador soporte la tecnología Java para poder usarse la alternativa DeployJava.js, en caso contrario (Chrome, Explorer Edge, …) el fichero jnlp se descarga como un fichero y es necesario que el usuario manualmente ejecute dicho fichero.
Java FX
Java FX está basado en Java. La plataforma JavaFX permite a los desarrolladores de la aplicación crear e implementar fácilmente aplicaciones de internet enriquecidas (RIA) que se comportan de la misma forma en distintas plataformas.
El método recomendado para incrustar una aplicación JavaFX en una página web o lanzar desde el interior de un navegador web es el uso de la biblioteca de Deployment Toolkit (dtjava.js), la cual nos permite el lanzado del fichero jnlp en el ordenador cliente.
Invocación por protocolo
La invocación por protocolo de JWS es una manera de salvar la necesidad de navegador con soporte de Java. Mediante invocación por Protocolo, el fichero jnlp será lanzado automáticamente siguiendo un formato de URI específico que empieza por “ecosignaturejws://”. Para que ésta URI esté registrada en el ordenador del cliente, es preciso que previamente esté instalada la utilidad ecoSignatureJWSHelper.msi (para Windows) o ELH (edatalia Linux Helper para Linux).
Arquitectura de la aplicación #
El desarrollo de la aplicación ecoSignature JWS presenta la intervención de tres actores principales:
- Browser: lanza el proceso de firma, consulta y visualiza eventos de ecoSignature JWS y actúa en base a estas respuestas.
- ecoSignature JWS: es la aplicación donde se realiza la firma que se ejecuta en local fuera del browser. Emite eventos hacia el intermediario del estado en el que se encuentra la firma.
- Intermediario o tipo de comunicación: es el encargado de recibir, procesar y emitir eventos entre los otros dos actores principales (browser y ecoSignature JWS). Está implementado con tecnología WebService SOAP o WebSocket.
Funcionamiento o flujo de la aplicación
- Un usuario accede a un HTML donde se encuentra la opción de “firmar PDF”.
- El intermediario invoca a ecoSignatureJWS, generando un fichero jnlp, en servidor o en local, con un identificador único de firmado. Este jnlp contiene todos los parámetros necesarios para la firma.
- ecoSignatureJWS es lanzada y envía eventos al intermediario.
- El intermediario recibe, procesa y emite eventos al browser. En el primer evento recibido se elimina del servidor el fichero jnlp si se ha optado por esta arquitectura generado en un paso anterior.
- El browser recibe eventos, los visualiza y gestiona el estado del proceso de firma.
- Con la aceptación de la firma manuscrita, el proceso de firma finaliza, generando un documento pdf que contiene la firma incrustada.
Instalación en servidor del caso de uso #
Para la distribución del caso de uso se entrega un archivo zip, cuya instalación depende del sistema operativo y de la tecnología seleccionada:
SO Windows #
- Instalación en servidor WAMP:
- Descargar un servidor Wamp (http://www.wampserver.com/) e instalar en el PC (se crea una carpeta en C:\wamp).
- Descomprimir archivo entregado (caso de uso comprimido en zip).
- Copiar carpeta www en el servidor (dentro de C:\wamp).
- Asegurarse que el puerto del servidor es el 8080, se puede observar en el archivo “httpd.conf” del servidor, se puede acceder a él a través del trayicon del programa Wamp en la barra de notificaciones de Windows o en la ruta “C:\wamp\bin\apache\apache2.4.2\con\f”, para una versión de servidor apache 2.4.2, cuyos valores deben ser “Listen 8080” y “ServerName localhost:8080”.
- Configuración del servidor web socket:
- Habilitar la extensión de websockets, para ello en el fichero “php.ini” descomentar la línea
extension = php_sockets.dll
, situada en la ruta C:\wamp\bin\php\php5.4.3\php.ini, para una versión 5.4.3 de php en el servidor. - Arrancar servidor, para ello abrir una consola, situarse en la ruta “C:\wamp\bin\php\php5.4.3\” y ejecutar el comando
php.exe -q
C:\wamp\www\JWS\WebSocket_ecobiometricJWS\serverWebSocket.php”.
- Habilitar la extensión de websockets, para ello en el fichero “php.ini” descomentar la línea
- Abrir navegador, tenemos desplegada la aplicación en http://localhost:8080/.
Por defecto, está habilitada la tecnología WebService SOAP, sin protocolo a la hora de firmar y generación del jnlp en local.
- Instalación servidor Tomcat:
- Descargar un servidor Apache Tomcat (http://tomcat.apache.org/), versión mínima 7. Por ejemplo, descargar distribución binaria en formato .zip (windows 32 bits) para la versión 7.0.69.
- Extraer el zip anterior (apache-tomcat-7.0.69) y situarlo en una determinada ruta, por ejemplo C:\Tomcat, con lo que obtendremos la ruta C:\Tomcat\apache-tomcat-7.0.69.
- Descargar e instalar una JRE (https://www.java.com/es/download/). Mínima versión de Java de servidor 1.6 para WebService y 1.7 para WebSocket. Se recomienda instalar Java 1.7+.
- Descomprimir archivo entregado (caso de uso comprimido en zip) y copiar archivo de distribución ecoSignatureJWS.war en la ruta C:\Tomcat\apache-tomcat-7.0.69\webapps.
- Abrir una consola y situarnos en C:\Tomcat\apache-tomcat-7.0.69\bin, lanzamos el servidor introduciendo “startup“, veremos que nuestra aplicación ecoSignatureJWS se despliega en nuestro servidor. Para parar el servidor “shutdown“.
- Abrir navegador, tenemos desplegada la aplicación en http://localhost:8080/ecoSignatureJWS.
Por defecto, está habilitada la tecnología WebService SOAP, sin protocolo a la hora de firmar y generación del jnlp en local.
- Instalación servidor IIS:
- Instalar IIS, activando web sockets.
- Descomprimir archivo entregado (caso de uso comprimido en zip).
- Desplegar carpeta “web” en servidor IIS, dando los permisos necesarios a la aplicación y usuarios.
- Abrir navegador, tenemos desplegada la aplicación en http://localhost/.
Por defecto, está habilitada la tecnología WebService SOAP, sin protocolo a la hora de firmar y generación del jnlp en local.
IMPORTANTE: Las librerías dll usadas en la solución son distribuidas por edatalia en 32 bits. Si el caso de uso se despliega en un servidor de 64 bits se debe habilitar el uso de aplicaciones de 32 bits.
Nota: Para habilitar el uso de aplicaciones de 32 bits en un servidor de 64 bits:
- Abrir el Administrador de Internet Information Services (IIS).
- En “Conexiones”, seleccionar “Grupo de aplicaciones”.
- Seleccionar el grupo de aplicación del servidor definido. Ir a “Modificar grupo de aplicaciones” y seleccionar “Configuración avanzada…”.
En la nueva ventana de “Configuración avanzada” habilitar la opción “Habilitar aplicaciones de 32 bits” en “General”.
SO Linux #
- Instalación en servidor LAMP:
- Descargar un servidor Lamp (http://www.ampps.com/LAMP). Se guarda en /home/[user]/Descargas.
- Instalación de AMPSS:
- Dar privilegios de administrador:
cd Descargas
chmod 0755 Ampps--.run
siendo:
- : x86 para 32 bits y x86_64 para 64 bits.
- con la versión actual de Ampps.
- Instalar:
sudo ./Ampps--.run
- Copiar carpeta www en el servidor (dentro de usr/local/ampps). Dar permisos de administrador si fuese necesario.
- Arrancar servidor, para ello abrir una consola:
cd /usr/local/ampps
sudo ./Ampps
- Abrir navegador, tenemos desplegada la aplicación en http://localhost/.
Por defecto, está habilitada la tecnología WebService SOAP, sin protocolo a la hora de firmar y generación del jnlp en local.
- Instalación servidor Tomcat:
- Descargar un servidor Apache Tomcat, versión mínima 7.
wget
http://www-us.apache.org/dist/tomcat/
tomcat-8/v8.0.45/bin/
- Extraer el archivo descargado apache-tomcat-8.0.45.tar.gz en la ruta /var/local:
sudo tar -zxvf apache-tomcat-8.0.45.tar.gz -C /var/local/
- Descargar e instalar una JRE o JDK (Ver Instalación de Java). Mínima versión de Java de servidor 1.6 para WebService y 1.7 para WebSocket. Se recomienda instalar Java 1.7+.
- Descomprimir archivo entregado (caso de uso comprimido en zip) y copiar archivo de distribución ecoSignatureJWS.war en la ruta /var/local/apache-tomcat-8.0.45/webapps.
- El servicio de Apache TomCat puede ser iniciado o detenido usando los scripts que vienen incluidos dentro del paquete.
Para iniciar el servicio de Apache Tomcat:
sudo /var/local/apache-tomcat-8.0.45/bin/startup.sh
Para detener el servicio de Apache Tomcat:
sudo /var/local/apache-tomcat-8.0.45/bin/shutdown.sh
- Abrir navegador, tenemos desplegada la aplicación en http://localhost:8080/ecoSignatureJWS.
Por defecto, está habilitada la tecnología WebService SOAP, sin protocolo a la hora de firmar y generación del jnlp en local.
IMPORTANTE: Para la correcta visualización del caso de uso se recomienda en Linux instalar las fuentes de Windows.
sudo apt-get install msttcorefonts
sudo fc-cache -fv
Para cualquier tipo de instalación, el archivo zip entregado permite el despliegue del caso de uso, se accede a través de http(s)://[url_servidor]/index.html.
Nota: Ambos casos de uso comparten las mismas cookies.
Ambos casos de uso se describen en el punto siguiente.
IMPORTANTE: Cualquier despliegue de la aplicación en otro tipo de servidor o en diferente ruta de los expuestos anteriormente puede implicar cambios de configuración en servidor y de programación en la aplicación ecoSignature JWS.
Instalación de puesto local #
La aplicación ecoSignature JWS requiere la instalación en el PC local de una serie de componentes para su correcto funcionamiento en un proceso de firmado dependiendo de la configuración seleccionada y del sistema operativo del que se disponga.
SO Windows #
Drivers #
Todo puesto de firma necesitan la instalación de los drivers correspondientes de las tabletas Wacom STU y DTU.
Helper #
Si se opta por la opción de invocación por protocolo, todo puesto debe instalar ecoSignatureHelper, herramienta desarrollada por edatalia para salvar la necesidad del navegador con soporte Java, con ello:
- se consigue la transparencia a la hora de lanzar el proceso de firmado independientemente del navegador utilizado.
- se evita la necesidad de dar permiso a la ejecución de plugins (Firefox <52).
- se evita la descarga y el lanzamiento por parte del usuario del fichero que lanza el proceso de firmado (Chrome y Firefox >= 52).
Servidor Web Socket local #
Si se opta por la opción de intermediario, que es el que realiza la comunicación entre el browser y ecoSignature JWS, implementado por Web Socket y corriendo en el PC local, se debe instalar un Web Socket en local desarrollado por edatalia, una pequeña aplicación windows que levanta un servidor web socket como Tray Icon, ejecutándose en segundo plano.
IMPORTANTE: Edatalia dispone de todos los componentes a instalar por separado (drivers, ecoSignatureHelper y Web Socket local), dependiendo de las necesidades del escenario de firmado.
También cuenta con ecoSignatureHelper Pack que incluye en un mismo instalador los drivers, ecoSignatureHelper y Web Socket local. La instalación se realiza de manera silenciosa a través de un msi.
Instalación de ecoSignatureJWSHelper Pack #
Para la instalación de la solución ecoSignatureJWSHelper Pack se deben realizar los siguientes pasos:
(Se recomienda no enchufar la tableta antes de la instalación de los drivers)
- Ejecutar el instalador proporcionado y seguir los pasos que indica el instalador. Pulsar en “Siguiente”:
- Aceptar los términos de la licencia y pulsar en “Siguiente”:
- Seleccionar la opción “Personalizada”:
- En esta pantalla se puede elegir que opciones instalar:
- ecoSignatureJWSHelper: instala la herramienta necesaria para la invocación por protocolo.
- WebSocket: instala el web socket en local como Tray Icon que se ejecuta en segundo plano al iniciar el ordenador.
- Drivers STU: instala los drivers para las tabletas Wacom.
Los elementos que aparecen con una X roja indican que no se instalan en el ordenador, pinchar en la flecha del costado para decir que “se instalará en la unidad de disco duro local”, en el caso de que querer instalar esa opción. De lo contrario dejar la de defecto.
Se presenta la opción de elegir la carpeta donde se instala el programa, dejar la que viene por defecto.
Pulsar en “Siguiente”.
- Pulsar en “Instalar”:
Si aparece un mensaje de advertencia de Windows, decir que si queremos permitir que se instale el programa.
- Una vez finalizada la instalación pulsar en “Finalizar”, y ya está instalado ecoSignatureJWSHelper Pack en nuestro equipo:
- Para que los cambios surtan efecto se debe reiniciar el PC:
- Una vez reiniciado el PC se observa el levantamiento del Web Socket local como Tray Icon:
SO Linux #
En el enlace se explica como instalar el puesto de firma para poder ejecutar la solución ecoSignatureJWS en entornos LINUX.
Caso de uso: ecoSignatureJWS #
Se presentan dos posibles casos de uso:
- Con visor: el usuario puede seleccionar los parámetros de configuración para el firmado, visualizando el documento pdf en pantalla e interactuar con dicho documento dependiendo del tipo de posicionamiento seleccionado para el lanzamiento de la firma. Una vez realizado el proceso de firma se muestra el documento pdf firmado.
- Simple: el usuario puede seleccionar los parámetros de configuración para el firmado y lanzar la firma. Una vez realizado el proceso de firma se muestra el documento pdf firmado.
El visor está implementado a través de la librería javascript PDF.js, la cual es una herramienta de Mozilla Corporation. El objetivo de esta librería es aprovechar las novedades de HTML5/Javascript para visualizar ficheros PDF en un canvas, para incrustar un documento PDF en una página sin emplear plugins adicionales o programas externos.
En ocasiones, programas externos tienen sus propias formas de interacción en el documento. Con esta librería se consigue que desde la propia web, decida cómo desea que se navegue por el documento mejorando la experiencia de usuario de la aplicación web.
Para la selección de los parámetros de configuración de la firma nos aparece la misma página (interface) en ambos casos (en el caso de uso con visor hay que clicar sobre el botón que aparece en la parte inferior izquierda de la pantalla para acceder a dicha página).
En el caso de uso se puede observar que disponemos de cinco bloques definidos:
- Documento PDF:
Documento a firmar:
- Selección de documento PDF de ejemplo para firmar:
A través de un select nos da la posibilidad de elegir un documento de ejemplo de los que tenemos en una determinada ruta en el servidor.
Documento firmado:
- Selección de descarga:
Nos da la opción de si queremos la descarga en local del documento pdf firmado. Se permite la introducción de una ruta local de descarga.
Nota: Se debe tener en cuenta en la introducción de la ruta:
- Si se deja vacía, se descarga el documento en temporales.
- Si la ruta es inexistente, mal formada, no accesible, se descarga en temporales.
- La ruta debe existir, se usan caracteres “/” en vez de “\”. Ejemplo: “C:/Temp/”.
El componente de introducción de ruta solamente está habilitado si se ha seleccionado la descarga del documento pdf firmado.
- Selección de abrir documento firmado:
Si se habilita la opción se permite la ejecución del documento pdf firmado con la aplicación que esté asociada para ello.
Está habilitada si se ha seleccionado la descarga del documento pdf firmado.
- Captura Firma Manuscrita:
Opciones de Captura de Firma Digital:
- Activar captura de Firma Digital Manuscrita (FDM):
Selección de captura de firma digital manuscrita. Si se desactiva, no se captura la biometría y se aplica la firma digital con certificado (sin captura de rúbrica).
Nota: En la firma digital (sin biometría) por defecto, se puede observar la aparición de una imagen de fondo desarrollada por edatalia incrustada en la firma.
Por defecto la firma se realiza mediante un certificado embebido en el propio JWS.
Firma Digital Manuscrita:
- Selección de dispositivo de captura biométrica:
Seleccionamos el tipo de dispositivo con el que vamos a realizar la firma biométrica (nos encontramos con los siguientes valores de Detección automática, STU-Color (STU-530, STU-540,…), STU-B/N (STU-430), Stylus y Pantalla táctil (firma con ratón)).
En Linux la opción de dispositivo de captura biométrica Stylus se encuentra deshabilitada.
- Mostrar botones en dispositivo USB de captura biométrica:
Si está chequeado nos aparecerán los botones en el dispositivo USB de captura biométrica. Para estar esta opción habilitada debemos haber seleccionado anteriormente un dispositivo de captura biométrica físico.
- Anchura del lápiz en píxeles para la presión máxima:
Selección de la anchura de la línea del grafo para la presión máxima en píxeles.
- Introducir coordenadas GPS:
Intenta capturar coordenadas GPS y asociarlas a la Firma Digital Manuscrita.
- Variables a mostrar en la tableta:
La visualización en la tableta se gestiona por medio de plantillas EBP que pueden contener imágenes, textos y botones (veáse documentación correspondiente a la gestión de plantillas EBP).
Para el caso de uso se presentan varias plantillas EBP, dependiendo del tipo de dispositivo de captura biométrico seleccionado.
En este caso de uso, las plantillas engloban las variables Título, Subtítulo, Nombre, ÁreaFirma y LOPD.
- Pantalla de aceptación de cláusula anterior a la firma:
Si está chequeado se activa el uso de una pantalla inicial, es decir, se trata de una pantalla que puede mostrar un texto previo a la pantalla donde se recoge la firma, este texto es configurable.
- Firma Digital: selección de la visualización de la firma en el documento PDF:
Tamaño y posición de la firma en el PDF (wdiget):
- Tamaño de la firma en el PDF (widget):
Definición de la anchura y de la altura de la firma en el documento pdf. Se recomienda un ratio igual al área de la firma que se presente en las plantillas EBP (en el caso de uso se utiliza un ratio 4:1).
- Posicionamiento de la firma en el PDF (widget):
Se presentan tres tipos de posicionamiento a seleccionar:
- Posicionamiento manual:
Definición de posición de coordenadas X e Y y mínima altura de la firma en el documento pdf. Si X e Y son nulas o vacías la ventana de firma inicialmente se posiciona en el centro de la página del documento pdf seleccionada.
El usuario puede mover/trasladar y redimensionar la ventana de firma por la página del documento pdf.
En el caso de uso simple esta opción se encuentra deshabilitada.
- Posicionamiento fijo:
Definición de posición de coordenadas X e Y fija y del número de página de la firma en el documento pdf, cuando sabemos el lugar concreto en el que queremos que se firme.
Un documento PDF DINA4 tiene una altura aproximada de 842 píxeles.
- Posicionamiento flotante:
Indicamos que nos busque en el documento pdf la cadena de caracteres que a continuación le definiremos para poder situar la firma en una determinada posición respecto a la cadena de caracteres del pdf en la que queremos situar la firma.
El desfase indica el número entero de unidades de desfase (positivo o negativo) en el eje X e Y desde el vértice inferior izquierdo de la página, no confundir con píxeles.
- Firma en todas las páginas:
Si está chequeado la firma se muestra en todas las páginas del documento.
Esta opción se encuentra habilitada solamente para posicionamientos manual y fijo.
Opciones Avanzadas de la Firma Digital:
- Selección de usar certificado del almacén de windows:
Si se habilita la opción se permite firmar con un certificado del almacén de windows que dispongamos.
En Linux esta opción se encuentra deshabilitada.
- Selección de uso de TSP:
Si está chequeado permite la incorporación de un sello de tiempo externo a la firma electrónica.
Se deben introducir los valores de url, usuario y password correspondientes al servicio de sellado de tiempo a utilizar.
- Selección de uso de OCSP:
Si está chequeado permite la validación online de certificados.
Se deben introducir los valores de url, usuario y password correspondientes al servicio de validación de certificados a utilizar.
- Selección de certificar el PDF:
Nos da la opción de si queremos la certificación de la firma del pdf o no.
La firma certificada no permite volver a firmar el documento.
La firma certificada es un estándar de adobe que presenta características especiales.
- Visualización en PC: selección de opciones de visualización en la pantalla del PC del operador o controlador (solamente para Firma Digital Manuscrita):
- Mostrar plantilla EBP en el PC:
Si está chequeado muestra al operador o controlador en la pantalla del PC, lo que se está visualizando en la tableta.
- Dimensiones de la pantalla de controlador PC en pixels:
Selección de anchura y altura de la ventana de la aplicación ecoSignature JWS.
El valor es actualizado con la selección de tableta. Se recomienda un ratio 800×480 (STU-530, STU-520) o 640×400 (STU-430) si se elige mostrar plantilla EBP.
- Habilitar ventana Controller:
Aparición de una segunda ventana, copia de la de captura de firma, para en casos multimonitor (como las DTU) para que tanto el firmante como el controlador de la firma puedan ver y operar sobre el funcionamiento y/o aceptación de la firma
Esta opción se encuentra habilitada solamente para tipo de tableta Stylus y Detección automática.
- Arquitectura: selección de arquitectura tecnológica:
- Selección de tipo de comunicación:
Selección de tecnología WebService SOAP o WebSocket en la comunicación entre el browser y ecoSignature JWS.
En PHP (Linux) la opción de WebSocket está deshabilitada.
- Devolución de documento PDF firmado:
Devolución por parte de ecoSignature JWS del pdf firmado bien vía POST (el pdf firmado está disponible en una determinada url) o bien en base 64 (el pdf firmado es devuelto al navegador en base 64).
Esta opción se encuentra habilitada solamente para el tipo de comunicación WebSocket, para WebService SOAP la devolución del documento PDF firmado siempre es vía POST.
- Uso de Virtual Channel Citrix:
Esta opción se encuentra habilitada solamente para Windows.
- Generación de fichero jnlp:
Selección de generación de fichero jnlp para el lanzamiento de la aplicación ecoSignature JWS, en servidor o en local.
- Selección de uso de protocolo:
La invocación por protocolo de JWS es una manera de salvar la necesidad de navegador con soporte de Java. En este apartado se selecciona el uso o no de protocolo en el proceso de firma.
Esta opción se encuentra habilitada solamente para Generación de fichero jnlp en local en Windows.
En la parte inferior de la página de configuración de parámetros se muestran diferentes botones que nos permiten realizar diferentes acciones:
- Botón “Guardar y volver”:
Guarda los valores de las opciones de los parámetros de configuración seleccionados y actualiza el visionado del documento pdf si procede.
Presente solamente en el caso de uso con visor.
- Botón “Restablecer”:
Inicializa a valores por defecto los valores de los parámetros de configuración.
Presente para ambos casos de uso.
- Botón “Volver”:
Vuelve al visionado del documento pdf.
Presente solamente en el caso de uso con visor.
- Botón “Firmar”:
Lanza el proceso de firma con los parámetros de configuración seleccionados.
Presente solamente en el caso de uso simple.
El caso de uso con visor nos permite interactuar con el posicionamiento y el lanzamiento de la firma. Así, el usuario lanza la firma a través de un botón posicionado en la parte superior izquierda de la pantalla en la visualización del documento, que al ser pulsado, crea la ventana de firma:
- la ventana de firma puede ser redimensionada y desplazada por la página del documento seleccionada si el posicionamiento seleccionado es manual, y al clicar sobre la ella se lanza la firma,
- en caso contrario, no se podrá realizar ninguna acción sobre ella.
Para los posicionamientos fijo y flotante el usuario lanza la firma pulsando sobre el botón mencionado anteriormente.
Una vez que es lanzada la firma, tanto para el caso de uso simple como con visor, nos aparece la ventana de espera de firmado y la ventana de introducción de firma de la aplicación ecoSignature JWS (para firma digital manuscrita), ésta última puede mostrarse en diferentes tamaños/formatos dependiendo de los parámetros de configuración seleccionados anteriormente.
En la imagen, se muestra la ventana de espera, que permanece activa mientras se realiza el proceso de firmado. La ventana de espera de firmado muestra los eventos de firmado recibidos por parte de la aplicación ecoSignature JWS, es decir, el estado en el que se encuentra el proceso de firma en todo momento. Estos eventos son observados en el bloque de “Eventos recibidos”.
En la siguiente imagen podemos observar la ventana de introducción de firma de la aplicación:
En la ventana de introducción de firma se pueden realizar las siguientes operaciones:
- Reiniciar: reinicio de la firma.
- Cancelar: cancelación de la firma.
- Firmar: firma del documento.
Los botones presentan eventos de teclado:
- CTRL+R: reiniciar.
- CTRL+C: cancelar.
- CTRL+A: firmar.
Nota: Éste es el comportamiento por defecto. Se permiten configurar las teclas en el JWS.
Una vez realizada la firma, se observa el documento pdf firmado, siempre que no se haya seleccionado la devolución del documento PDF en base 64.
- Firma digital manuscrita:
- Caso de uso simple:
- Caso de uso simple:
- Caso de uso con visor:
- Firma digital (sin biometría):
- Caso de uso simple:
- Caso de uso con visor:
- Caso de uso simple:
Nota: Se incrusta una imagen de fondo.
Finalmente volvemos al estado inicial a través de los botones en pantalla, diferentes dependiendo del tipo de caso de uso con el que trabajemos, que se visualizan en pantalla.
En el caso de que se haya seleccionado la devolución del documento firmado PDF en base 64, se mostrará un mensaje de confirmación de la correcta generación del pdf, permitiendo descargar dicho documento:
La aplicación ecoSignature JWS permite la descarga y la ejecución en local, con la aplicación que esté asociada para ello (Adobe Acrobat Reader, Foxit Reader,…), del documento pdf firmado.
Personalización del caso de uso #
Para la personalización del caso de uso se dispone del fichero “personalizacion.js”, en la raíz del proyecto, donde se pueden configurar los siguientes parámetros relacionados con la inicialización del caso de uso:
- Variable de tecnología en servidor (tecnology (Entero)).
IMPORTANTE: No cambiar el valor de esta variable.
- Selección de documento a firmar por defecto (nameFilePersCu (Cadena de texto)).
- Activación de Firma Digital Manuscrita (checkFDM (Booleano)).
- Tipo de tableta (tabletPersCu (Entero)).
- Variables de tableta (textTituloPersCu (Cadena de texto), textSubtituloPersCu (Cadena de texto), textNombrePersCu (Cadena de texto), textAreaFirmaPersCu (Cadena de texto) y textLOPDPersCu (Cadena de texto)).
- Activación de pantalla previa (checkEBPInicialPersCu (Booleano) y textTextoPrevioPersCu (Cadena de texto)).
- Dimensiones del widget (widgetWidthPersCu (Entero) y widgetHeightPersCu (Entero)).
- Selección de posicionamiento (positionPersCu (Entero)).
- Mínima altura del widget para posicionamiento manual (widgetMinHeightPersCu (Entero)).
- Parámetros para posicionamiento fijo (widgetXPersCu (Entero), widgetYPersCu (Entero) y widgetPagePersCu (Entero)).
- Parámetros para posicionamiento flotante (textAutoPosPersCu (Cadena de texto), desfaseXPersCu (Entero) y desfaseYPersCu (Entero)).
- Activación del sellado de tiempo en el momento de la firma (tspActivatePersCu (Booleano), tspUrlPersCu (Cadena de texto), tspUserPersCu (Cadena de texto) y tspPasswordPersCu (Cadena de texto)).
- Activación de la validación del estado de revocación del certificado en el momento de la firma (ocspActivatePersCu (Booleano), ocspUrlPersCu (Cadena de texto), ocspUserPersCu (Cadena de texto), ocspPasswordPersCu (Cadena de texto) y setValidateErrorContinuePersCu (Booleano)).
Nota: Si está activada la validación del estado de revocación del certificado en el momento de la firma y no se ha introducido la URL del OCSP, se toma automáticamente en la comprobación la URL del OCSP del certificado.
- Tipo de comunicación (comunicationPersCu (Entero)).
- Tipo de firmado (typeSignedPersCu (Entero)).
- Devolución de PDF firmado (pdfSignedPersCu (Booleano)).
- Generación de fichero jnlp (generationJNLPPersCu (Entero)).
- Uso de protocolo (protocoloPersCu (Entero)).
- Activación de Virtual Channel Citrix (checkCitrixPersCu (Booleano)).
- Descarga y ejecución en local de documento pdf firmado (checkDownloadPDFPersCu (Booleano), textFolderDownloadPDFPersCu (Cadena de texto) y checkExecutionPDFPersCu (Booleano)).
Además, se presenta la configuración de otros parámetros de firmado no presentes en el caso de uso:
- Parámetros relacionados con las plantillas o ebp’s:
- Para la STU-430 (ebpInitial430PersCu (Cadena de texto), ebpConBotones430PersCu (Cadena de texto) y ebpSinBotones430PersCu (Cadena de texto)).
- Para las STU-520 y STU-530 (ebpInitialPersCu (Cadena de texto), ebpConBotonesPersCu (Cadena de texto) y ebpSinBotonesPersCu (Cadena de texto)).
- Para la STU-430 (ebpInitial430PersCu (Cadena de texto), ebpConBotones430PersCu (Cadena de texto) y ebpSinBotones430PersCu (Cadena de texto)).
Protocolo https #
Para la configuración del caso de uso mediante el protocolo de transferencia de Hiper-Texto (HTTPS) realizar los siguientes pasos:
SO Windows #
- Instalación en servidor WAMP:
- Descargar un servidor Wamp (http://www.wampserver.com/) e instalar en el PC (se crea una carpeta en C:\wamp).
- Descomprimir archivo entregado (caso de uso comprimido en zip).
- Copiar carpeta www en el servidor (dentro de C:\wamp).
- Asegurarse que el puerto del servidor es el 8080, se puede observar en el fichero “httpd.conf” del servidor, cuyos valores deben ser “Listen 8080” y “ServerName localhost:8080”.
- En la ruta “c:\wamp\bin\apache\apache2.4.2\conf” para una versión 2.4.2 de apache en el servidor:
- Ir al fichero “httpd.conf” en la ruta y descomentar las líneas:
- LoadModule ssl_module modules/mod_ssl.so
- Include conf/extra/httpd-ssl.conf
- LoadModule ssl_module modules/mod_ssl.so
- Include conf/extra/httpd-ssl.conf
- En la ruta “c:\wamp\bin\apache\apache2.4.2\conf\extra\”, ir al fichero “httpd-ssl.conf”
- Ir al fichero “httpd.conf” en la ruta y descomentar las líneas:
- Cambiar las rutas de los certificados de servidor:
- SSLCertificateFile
- SSLCertificateKeyFile
- Cambiar el puerto virtual de acceso del servidor en modo seguro:
Listen 8443
- Cambiar las líneas que hacen referencia a la raíz del documento y a los logs por rutas reales en servidor:
DocumentRoot "C:/wamp/www"<br>ServerName localhost<br>ServerAdmin admin@localhost<br>ErrorLog "C:/wamp/logs/ssl_error.log"<br>TransferLog "C:/wamp/logs/ssl_access.log"
- Cambiar el directorio de wamp e introducir el siguiente código:
<Directory "C:/wamp/www"><br> SSLOptions +StdEnvVars<br> Options Indexes FollowSymLinks MultiViews <br> AllowOverride All<br> Order allow,deny <br> allow from all
- Cambiar la ruta del log personalizado en CustomLog por rutas reales en el servidor:
CustomLog "C:/wamp/logs/ssl_request.log" \<br>"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
Nota: Si está activada la caché en el fichero “httpd-ssl.conf” (SSLSessionCache y SSLSessionCacheTimeout) se deben tener descomentadas las siguientes líneas en el fichero “httpd.conf”:
- LoadModule cache_module modules/mod_cache.so
- LoadModule socache_dbm_module modules/mod_socache_dbm.so
- LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
- Habilitar la extensión de ssl, para ello en el fichero “php.ini” descomentar la línea “extension = php_openssl.dll”, situada en la ruta C:\wamp\bin\php\php5.4.3\php.ini, para una versión 5.4.3 de php en el servidor.
- Configuración del servidor web socket:
- Habilitar la extensión de websockets, para ello en el fichero “php.ini” descomentar la línea “extension = php_sockets.dll”, situada en la ruta C:\wamp\bin\php\php5.4.3\php.ini, para una versión 5.4.3 de php en el servidor.
- Arrancar servidor, para ello abrir una consola, situarse en la ruta C:\wamp\bin\php\php5.4.3\ y ejecutar el comando “php.exe -q C:\wamp\www\JWS\WebSocket_ecobiometricJWS\serverWebSocket.php”.
- Abrir navegador, tenemos desplegada la aplicación en https://localhost:8443/.
Por defecto, está habilitada la tecnología WebService SOAP, sin protocolo a la hora de firmar y generación del jnlp en local.
- Instalación servidor Tomcat:
- Descargar un servidor Apache Tomcat (http://tomcat.apache.org/), versión mínima 7. Por ejemplo, descargar distribución binaria en formato .zip (windows 32 bits) para la versión 8.0.42.
- Extraer el zip anterior (apache-tomcat-8.0.42) y situarlo en una determinada ruta, por ejemplo C:\Tomcat, con lo que obtendremos la ruta C:\Tomcat\apache-tomcat-8.0.42.
- Descargar e instalar una JRE (https://www.java.com/es/download/). Mínima versión de Java de servidor 1.6 para WebService y 1.7 para WebSocket. Se recomienda instalar Java 1.7+.
- Descomprimir archivo entregado (caso de uso comprimido en zip) y copiar archivo de distribución ecoSignatureJWS.war en la ruta C:\Tomcat\apache-tomcat-8.0.42\webapps.
- Crear un archivo keystore, de nombre por ejemplo “.myKeystore” con un determinado “password”, que es un almacén de certificados con claves privadas. Existen diversas formas de creación. Copiar la keystore en C:\Tomcat\apache-tomcat-8.0.42\.
- Configurar en el fichero server.xml el protocolo seguro, que se encuentra en la ruta C:\Tomcat\apache-tomcat-8.0.42\conf\, para ello introducir el siguiente código.
- Descargar un servidor Apache Tomcat (http://tomcat.apache.org/), versión mínima 7. Por ejemplo, descargar distribución binaria en formato .zip (windows 32 bits) para la versión 8.0.42.
protocol="org.apache.coyote.http11.Http11NioProtocol"<br>maxThreads="150" SSLEnabled="true" scheme="https" secure="true"<br>clientAuth="false" sslProtocol="TLS" keystoreFile=".myKeystore"<br>keystorePass="prueba" />
Siendo “.myKeystore” el nombre que le hemos dado a la keystore y “prueba” el password de dicha keystore en su creación.
- Aumentar el espacio disponible para la ejecución de la máquina virtual de Java (JVM), introduciendo en el fichero catalina.bat situado en la ruta C:\Tomcat\apache-tomcat-8.0.42\bin\ el siguiente código:
set CATALINA_OPTS=-Xms256m -Xmx1024m
- Abrir una consola y situarnos en C:\Tomcat\apache-tomcat-8.0.42\bin, lanzamos el servidor introduciendo “startup“, veremos que nuestra aplicación ecoSignatureJWS se despliega en nuestro servidor. Para parar el servidor “shutdown”.
- Abrir navegador, tenemos desplegada la aplicación en https://localhost:8443/ecoSignatureJWS.
Por defecto, está habilitada la tecnología WebSocket, sin protocolo a la hora de firmar y generación del jnlp en local.
Generación de jnlp en local + uso de protocolo #
Si se ha optado por una arquitectura de generación del fichero jnlp en local y su posterior lanzamiento mediante el uso de protocolo en un entorno seguro (https), ecoSignature JWS levanta un web socket en local, por defecto en el puerto 8282 (configurable a través de código), a través de nuestra herramienta Helper, la cual tiene asociado un certificado, bien embebido o bien configurable externamente, que se debe tener importado en nuestro navegador. La forma de importar el certificado depende del navegador utilizado.
IMPORTANTE: El certificado asociado a la herramienta Helper utilizado en un protocolo https presenta dos variantes:
- Se puede utilizar el embebido dentro de la herramienta, el cual se debe importar en el navegador utilizado.
Nota: Edatalia pone a su disposición dicho certificado.
- Se puede configurar un certificado externo, para ello basta con dejar en la carpeta de instalación de la herramienta Helper (junto al ejecutable ecoSignatureJWSHelper.exe) dos archivos:
- crt.crt: clave pública del certificado.
- key.key: clave privada del certificado.
- crt.crt: clave pública del certificado.
El certificado se debe importar en el navegador utilizado.
Importación de certificado al almacén de windows #
A continuación se enumeran los pasos a realizar para importar un certificado al CryptoAPI de windows (almacén de certificados). Válido para navegadores como Chrome e Internet Explorer:
- Hacer doble click sobre el certificado entregado.
- Seleccionar Usuario actual y pulsar en “Siguiente”.
- Introducir el nombre o ruta del archivo y pulsar en “Siguiente”
- Introducir la contraseña, habilitar los tres checks y pulsar en “Siguiente”
- Situar el certificado en el Almacén de certificados, en las Entidades de certificación raíz de confianza y pulsar “Siguiente”
- Pulsar en “Finalizar”
- Se muestra la siguiente ventana. Pulsar en “Aceptar”
Importación de certificado en Firefox #
A continuación se enumeran los pasos a realizar para importar un certificado en el navegador Firefox:
- Abrir una consola de windows.
- Levantamiento del web socket en local Introducir el comando:
start ecoSignatureJWSHelper:?wss:8282
Siendo el puerto asociado al web socket, por defecto 8282. - Abrir el navegador Firefox. Ir a “Abrir Menú” “Opciones”
- Ir a “Avanzado” “Ver Certificados”
- Se abre la ventana de Administrador de certificados. Ir a opción de “Servidores”. Pulsar sobre “Añadir excepción”
- Introducir dirección del web socket: https://127.0.0.1:8282. Pulsar en “Obtener certificado”.
- Pulsar en “Confirmar excepción de seguridad”
- Observar que el certificado se ha importado.
- Matar el web socket local Ir a la consola de windows e introducir el comando:
taskkill /f /im ecoSignatureJWSHelper.exe
WebSocket en local #
Si se ha optado por un intermediario implementado con WebSocket en local en un entorno seguro (https), presenta un certificado configurable externamente, que se debe tener importado en nuestro navegador. La forma de importar el certificado depende del navegador utilizado y se seguiría lo expuesto en apartados anteriores.
IMPORTANTE: El servidor web socket en local al ser levantado en modo seguro para su funcionamiento necesita disponer en la misma ruta de lanzamiento de un certificado, denominado “certificado.pfx” con contraseña vacía.
Edatalia pone a su disposición tanto el certificado como el proyecto si se requiere realizar algún cambio en el comportamiento.
Java 1.6 #
Si se ha optado por una firma en local con Java 1.6 en un entorno seguro (https), existe una limitación en el tamaño del certificado a utilizar en servidor. El tamaño máximo aceptable que acepta Java 1.6 es de 1024 bits, el cual es un problema conocido (ver https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6521495).
Para solventar dicha limitación utilizar el proveedor de JCE de BouncyCastle y realizar los siguientes pasos:
- Descargar los jar’s:
- bcprov-jdk15on-154.jar: https://www.bouncycastle.org/download/bcprov-jdk15on-154.jar
- bcprov-ext-jdk15on-154.jar: https://www.bouncycastle.org/download/bcprov-ext-jdk15on-154.jar
- Copiar/mover estos archivos jar a $ JAVA_HOME/lib/ext
- Editar $JAVA_HOME/lib/security/java.security de la siguiente manera:
security.provider.1 = org.bouncycastle.jce.provider.BouncyCastleProvider
Nota: Si aparecen más proveedores, mantener la configuración incluyendo el nuevo proveedor en primer lugar. Si ya se encuentra el proveedor situarlo en primer lugar. - Reiniciar la aplicación.
A partir de aquí, para la integración de la aplicación ecoSignature JWS, edatalia pone a disposición un nuevo manual de integración “ecoSignature JWS – Manual técnico e integración”.