Consejera de Justicia y Administracin Pblica Direccin General
Consejería de Justicia y Administración Pública Dirección General de Organización, Inspección y Calidad de los Servicios Notario electrónico Antonio Pedro Serrano Álvarez Jefe de Gabinete de Planificación Coordinación Informática Dirección General de Organización, Calidad e Inspección de los Servicios Junta de Andalucía.
Índice • • • Descripción Arquitectura lógica Arquitectura física Cliente Notario Electrónico Ejemplo práctico
Descripción Notario Electrónico n ¿Qué es? l n Servicios que ofrece. n n n Es un sistema que actúa como tercera parte de confianza en las relaciones telemáticas entre Ciudadanos. Organismos Oficiales y entre los propios Organismos Oficiales. Acuses de recibo. Fechado digital con sellos de tiempo. Estructura. n n API cliente. Servidor de Notario Electrónico.
Arquitectura lógica Servidor de Firma Electrónica JAVA API Cliente NE Solicitudes XML firmadas APACHE JBOSS HTTPS SOAP Respuestas XML Web. Server TSA Client Tier Módulo de TSA con visibilidad local STS Web. Service Session EJBs Entity Oracle Middleware Tier Back-end Tier
Dentro de la red corporativa Fuera de la red corporativa SSL VPN/SSL Internet Intranet VPN/SSL Servidores aplicaciones webservice en alta disponibilidad HA Servidores de bases de datos HA Cabina de Discos
Sistemas de información de las Consejerías y Organismos Sistema Autorizaciones Control Acceso Registro Licitadores Sistema Validación Consejerías Directorio Módulo Servidor Directorio Autoridad de Políticas Consejería de Presidencia Sistema de Validación NAU Módulo Servidor Directorio Principal Consejería de Justicia y Administración Pública Cliente Sistema Construcción Autorizaciones Firma Electr. Cliente Sistema Validación de Certificados Cliente Notario Electrónico Módulo Servidor TSA Aplicaciones Entorno de Usuarios Otras CA´s BD Segura Validar Recibos FNMTRCM
Interfaz Cliente NE Las llamadas al notario se realizan invocando los métodos de un objeto java llamado MCNE, cuyas funciones públicas conforman el API de las aplicaciones con el Cliente de Notario. El constructor del objeto MCNE recibe dos parámetros: public MCNE(int id. Aplicacion, String fichero. Propiedades) throws mcne. excepciones. Cliente. Notario. Exception Entero que identifica a la aplicación que invoca al Cliente. Parámetros configuración (fichero mcne. properties) • Protocolo: http o https • Dirección ip de la conexión El cliente de Notario siempre devuelve la excepción mcne. exceptions. Cliente. Notario. Exception , en cuyo mensaje se especifica la causa del error. Siempre debe capturarse. • Puerto de la conexión • Path de la aplicación del servidor de Notario • Uso o no de proxy (entonces host y puerto pero sin autenticación) • Fichero de configuración de la salida log (Log 4 j)
Sellado de tiempo. Métodos Solicitud • public byte[] solicitar. Sello. Tiempo(byte[] values) throws mcne. excepciones. Cliente. Notario. Exception Parámetro: un array de bits que contiene el documento del que se solicita el sello de tiempo. Retorno: el sello de tiempo en forma de array de bits (time stamp token) • public byte[] solicitar. Sello. Tiempo(String path) throws mcne. excepciones. Cliente. Notario. Exception Idéntico al caso anterior, pero el documento se pasa como un fichero. • En ambos casos se realiza internamente un hash del documento, que se enviará al Servidor de Notario. • Debe tratarse la excepción Cliente. Notario. Exception donde se recogeran todos los posibles errores. Validación del Sello • public boolean validar. Sello(byte[] sello, byte[] values) throws Cliente. Notario. Exception • public boolean validar. Sello(byte[] sello, String path) throws Cliente. Notario. Exception Se añade como primer parámetro el sello que se generó previamente y se desea validar.
Acuse de recibo • Se pueden realizar tres tipos de peticiones al cliente mediante el objeto MCNE: – Solicitar el Acuse de Recibo – Validar el Acuse de Recibo Generado – Solicitar la extracción de un Acuse de Recibo ya generado • Para solicitar un acuse de recibo debe construirse una solicitud de Acuse, cuya estructura dependerá de la política.
Acuse de recibo. Estructura Solicitud firma. PKCS 7 Atributos Colección de Documentos Documento(s) Atributos Aplicación Fecha IDPolítica Aplicación Documento Aplicación HASH NReferencia Comentario 1. . N Documentos . . . . Referencia Web Mail n n Cada uno de los componentes de la figura se corresponderá con un objeto java que lo implementa. Al final se obtiene un objeto Solicitud. Acuse. Recibo que contiene a todos los demás.
Acuse de recibo. Estructura de Acuse de Recibo Sello. Tiempo Solicitud Estructura de Solicitud de Recibo Atributos NRecibo IDPolitica Comentario
Acuse de recibo. Estructura n n Paquete mcne. asn 1. wrappers con los objetos necesarios Objeto mcne. excepciones. Cliente. Notario. Exception
Acuse de recibo. Métodos 1. Solicitud de Acuse de Recibo public byte[] solicitar. Acuse. Recibo(Solicitud. Acuse solicitud) throws Cliente. Notario. Exception; 2. Validación del Acuse de Recibo public boolean validar. Acuse(byte[] acuse, String politica) throws Cliente. Notario. Exception; 3. Extracción del Acuse de recibo public byte[] solicitar. Extraccion. Acuse(String num. Recibo) throws mcne. excepciones. Cliente. Notario. Exception
Acuse de recibo. Clases mcne api solicitudes Solicitud. Acuse. Recibo MCNE asn 1 wrappers (clases para documentos y Atributos) excepciones Cliente. Notario. Exception
Ejemplo práctico. Acuse de recibo 1 - ATRIBUTOS • Crear un objeto con las referencias Referencia referencias = new Referencia("www. juntaandalucia. es", "correo@junta. es") ; • Crear un objeto aplicación Aplicacion aplicacion = new Aplicacion(2, "Comentario Aplicación", referencias); • Crear los atributos – Crear el objeto Política Politica politica = new Politica( “ 1. 2. 3. 4”, "Comentario Política Acuse" ); – Incluir todo lo anterior en un objeto atributos. Atributos atributos = new Atributos(aplicacion, new Date(), politica, "Comentario Atributos" );
Ejemplo práctico. Acuse de recibo 2 - DOCUMENTOS • Añadir todos los objetos documento de los que se solicita el Acuse de Recibo Documento documento 1 = new Documento(“C: \Solicitud. doc”, “Num Referencia 1”); Documentos documentos = new Documentos(documento 1); String prueba = "t. Nombre: Julio Antoniont. Apellidos: . . . ”; Documento documento 2 = new Documento(prueba. get. Bytes(), ”Num Referencia 2”); documentos. add. Documento(documento 2);
Ejemplo práctico. Acuse de recibo 3 - SOLICITUD • Construir el objeto solicitud mcne. api. solicitudes. Solicitud. Acuse. Recibo solicitud = new Solicitud. Acuse. Recibo(documentos, atributos, null); • Llamar al método del objeto MCNE que procesa la solicitud byte[] acuse. Recibo = mcne. solicitar. Acuse. Recibo(solicitud); • Todo el código estará contenido en un try-catch donde debe capturarse la excepción: mcne. excepciones. Cliente. Notario. Exception El contenido de la excepción contendrá tanto los errores de operatividad como los de un mal uso de los objetos.
antoniop. serrano@juntadeandalucia. es
- Slides: 18