1. INDICE
  2. 1. HISTóRICO DE VERSIONES
  3. 2. INTRODUCCIóN
    1. 2.1. AVISO
  4. 3. CONTROL DE ACCESO CON CERTIFICADO DIGITAL
      1. 3.1. DISTRIBUCIóN DEL COMPONENTE
      2. 3.2. INCLUIR EL COMPONENTE EN LA APLICACIóN
  5. 4. FILTRO HTTPS (HTTPSFILTER)
      1. 4.1. CONFIGURACIóN EN WEB.XML
  6. 5. FILTRO DE CONTROL DE ACCESO (CERTIFICATEFILTER)
      1. 5.1. ALMACéN DE CERTIFICADOS DE CONFIANZA Y OCSP
      2. 5.2. CONFIGURACIóN EN WEB.XML

 


 

 

 

 

 

 

Control de acceso con certificado digital de usuario

 

 

 

Manual de integración

 

 

 

 

 

 

 

 

 

 

 

Elaborado por: David García
Fecha: 06/09/2016
Revisado por:
Fecha:
Revisado por ITCGAE:
Fecha:
Aprobado por:
Fecha:

Versión: 1.2

 

 

 

 

INDICE

 

 

1.   Histórico de versiones   3

2.   Introducción   4

2.1.   Aviso   4

3.   Control de acceso con certificado digital   5

3.1.   Distribución del componente   5

3.2.   Incluir el componente en la aplicación   6

4.   Filtro HTTPS (HttpsFilter)   7

4.1.   Configuración en web.xml   7

5.   Filtro de control de acceso (CertificateFilter)   8

5.1.   Almacén de certificados de confianza y OCSP   10

5.2.   Configuración en web.xml   12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Back to top


1.   HISTóRICO DE VERSIONES

 

DESCRIPCIÓN
FECHA
VERSIÓN
Elaboración inicial del documento.
10/12/2015
1.0
Cambios en el componente para incluir pruebas de carga, mejoras y solución de errores menores. Configuración para utilizar la nueva jerarquía de certificados ACA Demo 2016 Temporal. Configuración para adaptar el componente a los cambios en la autoridad de validación.
23/06/2016
1.1
CACC-13 Verificar la firma del certificado digital. Nueva página de error cuando no es posible verificar la integridad de un certificado digital.
06/09/2016
1.2

Back to top


2.   INTRODUCCIóN

Las aplicaciones con acceso seguro con certificado de cliente requieren validar el certificado presentado por el usuario. De esta forma aseguran que el usuario posee un certificado reconocido en vigor.

El componente de control de acceso con certificado digital de usuario realiza las siguientes comprobaciones.

1.   La comunicación se realiza por un canal seguro HTTPS.

2.   El usuario presenta un certificado digital de usuario.

3.   El certificado no ha caducado.

4.   El certificado está emitido por una autoridad de certificación reconocida por la aplicación.

5.   El certificado no está revocado. Consulta a OCSP.

6.   El certificado no está revocado. Si falla la consulta a OCSP comprueba las CRLs.

 

 


2.1.  AVISO

 

 

Por motivos de seguridad se recomienda instalar la versión 1.1.5, o superior, del componente de control de acceso.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Back to top


3.   CONTROL DE ACCESO CON CERTIFICADO DIGITAL

El componente de control de acceso se compone de los filtros HTTP:

·   HttpsFilter. Comprueba que la comunicación con el servidor se realiza mediante canal seguro HTTPS.

·   CertificateFilter. Comprueba que la comunicación se realiza mediante canal seguro HTTPS, el cliente presenta certificado digital vigente, válido y emitido por una autoridad de certificación reconocida.

El componente se distribuye como una librería. Para usar uno de los filtros HTTP en una aplicación Web será necesario:

1.   Incluir la librería y todas sus dependencias en la aplicación Web.

2.   Configurar el filtro en el archivo web.xml para que se ejecute en la ruta o rutas indicadas.

3.   Para usar CertificateFilter también será necesario configurar un almacén de claves con los certificados de las autoridades de certificación reconocidas. Se trata de un archivo JKS distinto del cacerts de la JDK con el que se ejecuta el servidor.

 


3.1.   DISTRIBUCIóN DEL COMPONENTE

Distribuciones del componente de control de acceso.

·   redabogacia-access-control-core-{version}.jar Distribución binaria del componente de control de acceso.

·   redabogacia-access-control-core-{version}-src.zip Distribución del código fuente del componente. Cumple la estructura de un proyecto Maven.

·   redabogacia-access-control-core-{version}-bin.zip Distribución binaria del componente y de todas sus dependencias.

·   redabogacia-access-control-core-{version}-bin_demo.zip Distribución binaria del componente y de todas sus dependencias. Incluye archivos de configuración para el acceso con certificados ACA en el entorno de preproducción.

·   redabogacia-access-control-core-{version}-bin_pro.zip Distribución binaria del componente y de todas sus dependencias. Incluye archivos de configuración para el acceso con certificados ACA en el entorno de producción.

 

Distribución como dependencia Maven. Credenciales:

 


<dependency>
<groupId>org.redabogacia</groupId>
<artifactId>redabogacia-access-control-core</artifactId>
<version>${version}</version>

</dependency>

 


3.2.   INCLUIR EL COMPONENTE EN LA APLICACIóN

La librería redabogacia-access-control-core-{version}.jar debe desplegarse en el directorio WEB-INF/lib de la aplicación Web que lo usa junto con todas sus dependencias.

La librería y todas sus dependencias se pueden obtener de una de las distribuciones binarias del componente. Será necesario resolver posibles conflictos entre distintas versiones de las dependencias del componente y de la aplicación Web.

En proyectos Maven se puede incluir usando las credenciales indicadas en el apartado anterior. Maven se encargará de resolver posibles conflictos entre las dependencias.

 

 

Back to top


4.   FILTRO HTTPS (HTTPSFILTER)

Comprueba que la comunicación con el servidor se realiza mediante canal seguro HTTPS.

 


4.1.   CONFIGURACIóN EN WEB.XML

Configuración del filtro en el archivo web.xml

 


<filter>
 <filter-name>HttpsFilter</filter-name>
 <filter-class>org.redabogacia.accesscontrol.filters.HttpsFilter</filter-class>
   <init-param>
   <param-name>url-error-https</param-name>
   <param-value>/path/error/403.html</param-value>
 </init-param>  
</filter>
<filter-mapping>
 <filter-name>HttpsFilter</filter-name>
 <url-pattern>/some/path</url-pattern>

</filter-mapping>

 

Parámetros:

·   url-error-https: Ruta a la página de error cuando la comunicación no es segura (no HTTPS).

Mapping del filtro. URLs para las que se ejecutará el filtro. Para más información consultar http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp/web_xml.html#1039330

 

 

Back to top


5.   FILTRO DE CONTROL DE ACCESO (CERTIFICATEFILTER)

Comprueba que la comunicación se realiza mediante canal seguro HTTPS, el cliente presenta certificado digital vigente, válido y emitido por una autoridad de certificación reconocida. Validaciones:

1.   La comunicación se realiza por un canal seguro HTTPS.

2.   El usuario presenta un certificado digital de usuario.

3.   El certificado no ha caducado.

4.   El certificado está emitido por una autoridad de certificación reconocida por la aplicación.

5.   El certificado no está revocado. Consulta a OCSP.

6.   El certificado no está revocado. Si falla la consulta a OCSP comprueba las CRLs.

 

CertificateFilter incluye las validaciones realizadas en HttpsFilter. Si la aplicación usa CertificateFilter no es necesario configurar HttpsFilter para el mismo conjunto de URLs.

 

 


5.1.   ALMACéN DE CERTIFICADOS DE CONFIANZA Y OCSP

El filtro de control de acceso requiere los certificados de las autoridades de certificación reconocidas.

Comprueba si el certificado está revocado consultando el OCSP y las CRLs indicadas en el propio certificado digital. Pero también es capaz de consultar un OCSP alternativo para aquellos certificados que no indican una dirección de OCSP. Esto requiere configuración adicional.

La configuración del componente de control de acceso reside en los siguientes ficheros:

1.   Archivo de configuración. Archivo en formato XML que establece:

1.1.   Ruta y clave del almacén de certificados de confianza. La ruta puede ser absoluta o relativa al archivo de configuración XML.

1.2.   Ruta y clave del almacén de certificados de confianza para la comunicación con los OCSP alternativos. La ruta puede ser absoluta o relativa al archivo de configuración XML.

1.3.   Lista de OCSPs alternativos.

2.   Almacén de certificados de confianza. Contiene los certificados de las entidades emisoras de confianza. Los certificados de cliente deben estar emitidos por una de las entidades

3.   Almacén de certificados de confianza para la comunicación con los OCSP alternativos.

 

La ruta al archivo de configuración se establecerá en una propiedad de arranque del servidor llamada CERT_CHECK_CONF. Ejemplo:

-DCERT_CHECK_CONF=/home/Datos/user_projects/domains/domainCGAE/certificate-filter/access-control.xml

 

 

 

 

El archivo de configuración tendrá la siguiente estructura. Ejemplo:

 


<?xml version="1.0" encoding="UTF-8"?>
<user-certificate-access-control>
<trusted-keystore>
<file>trustedcas-pro.jks</file>
<password>changeit</password>
</trusted-keystore>
<alternative-ocsp>
  <keystore>
  <file>ocsp-pro.jks</file>
  <password>changeit</password>
  </keystore>
  <ocsp-list>
  <ocsp>
  <description>Antiguo ACA intermedio</description>
  <ca-certificate-cn>ACA - Certificados Corporativos</ca-certificate-cn>
  <ca-certificate-subject-key-identifier>5a 79 4c a1 0c fc 08 16 2c c2 85 45 4f 32 ab e7 2b 45 c0 11</ca-certificate-subject-key-identifier>
  <url>http://ocsp.redabogacia.org</url >
  <responder-certificate-subject-key-identifier>33 6d d0 e9 cd 18 d7 b4 eb 4e fc f3 e3 cd fb 3d 5b c0 a3 9e</responder-certificate-subject-key-identifier>
  </ocsp>
  </ocsp-list>
</alternative-ocsp>

</user-certificate-access-control>

 

·   trusted-keystore/file – Ruta, relativa o absoluta, del almacén de certificados de confianza.

·   trusted-keystore/password – Clave del almacén de certificados de confianza.

·   alternative-ocsp – Establece la relación entre una autoridad de certificación y el OCSP que se empleará para validar los certificados emitidos por ella. El componente podrá usar OCSPs alternativos para los certificados que no incluyen la URL de su OCSP. Por otro lado, la respuesta del OCSP está firmada por una autoridad de certificación. Cuando se usa un OCSP alternativo es necesario comprobar que la respuesta está firmada por el certificado correcto.

·   alternative-ocsp/keystore/file – Ruta, relativa o absoluta, del almacén de certificados de respuesta del OCSP.

·   alternative-ocsp/keystore/password – Clave del almacén de certificados.

·   alternative-ocsp/ocsp-list/ocsp – OCSP alternativo

·   alternative-ocsp/ocsp-list/ocsp/description – Descripción de la configuración.

·   alternative-ocsp/ocsp-list/ocsp/ca-certificate-cn – CN del certificado de la CA. Solamente con carácter informativo.

·   alternative-ocsp/ocsp-list/ocsp/ca-certificate-subject-key-identifier – Identificador de clave del certificado de la autoridad de certificación. Permite relacionar un certificado reconocido con su OCSP.

·   alternative-ocsp/ocsp-list/ocsp/url – URL del OCSP.

·   alternative-ocsp/ocsp-list/ocsp/responder-certificate-subject-key-identifier – Identificador de clave del certificado con el que se firma la respuesta. Permite obtener el certificado del almacén de confianza para la comunicación con el OCSP y así validar la respuesta.

 


5.2.   CONFIGURACIóN EN WEB.XML

Cuando CertificateFilter niega el acceso a una petición identifica la causa para mostrar al usuario un mensaje de aviso apropiado. Existen varios motivos por los que se podrá negar el acceso a un usuario. Para todos ellos es posible configurar una página personalizada de error.

Las aplicaciones que se encuentran bajo el dominio www.redabogacia.org pueden usar la configuración por defecto de CertificateFilter. Mostrará la página de error adecuada en cada caso con los estilos y elementos estáticos disponibles en www.redabogacia.org/repoweb Para el resto de aplicaciones será necesario establecer páginas personalizadas de error.

Ejemplo de configuración mínima en web.xml

 


<filter>
 <filter-name>CertificateFilter</filter-name>
 <filter-class>org.redabogacia.accesscontrol.filters.CertificateFilter</filter-class>
</filter>
<filter-mapping>
 <filter-name>CertificateFilter</filter-name>
 <url-pattern>/some/path</url-pattern>

</filter-mapping>

 

Páginas de error personalizadas. Es posible configurar las páginas de error en los parámetros de arranque del filtro.

·   url-error-no-https El servidor requiere comunicación segura HTTPS.

·   url-error-no-ssl El servidor requiere comunicación segura SSL con certificado de usuario.

·   url-error-ca-unrecognized La autoridad emisora del certificado no está reconocida como autoridad de confianza.

·   url-error-cert-outofdate El certificado ha caducado.

·   url-error-cert-unknown Certificado de usuario no reconocido por OCSP.

·   url-error-cert-revoked Certificado de usuario revocado.

·   url-error-crl-notavailable No ha sido posible comprobar la validez del certificado, CRL no disponible.

·   url-error-crl-outofdate No ha sido posible comprobar la validez del certificado, CRL caducada.

·   url-error-cannot-validate-certificate No ha sido posible comprobar la validez del certificado (ninguno de los errores anteriores).

·   url-error-cert-invalid-signature La firma del certificado digital es incorrecta, el certificado está dañado o ha sido modificado.

 

Ejemplo de configuración estableciendo páginas de error personalizadas.

 


<filter>
 <filter-name>CertificateFilter</filter-name>
 <filter-class>org.redabogacia.accesscontrol.filters.CertificateFilter</filter-class>
 <init-param>
   <param-name>url-error-no-https</param-name>
   <param-value>/some/error/path/a.html</param-value>
 </init-param>
 <init-param>
   <param-name>url-error-no-ssl</param-name>
   <param-value>/some/error/path/b.html</param-value>
 </init-param>
 <init-param>
   <param-name>url-error-ca-unrecognized</param-name>
   <param-value>/some/error/path/c.html</param-value>
 </init-param>
 <init-param>
   <param-name>url-error-cert-outofdate</param-name>
   <param-value>/some/error/path/d.html</param-value>
 </init-param>
 <init-param>
   <param-name>url-error-cert-unknown</param-name>
   <param-value>/some/error/path/e.html</param-value>
 </init-param>
 <init-param>
   <param-name>url-error-cert-revoked</param-name>
   <param-value>/some/error/path/f.html</param-value>
 </init-param>
 <init-param>
   <param-name>url-error-crl-notavailable</param-name>
   <param-value>/some/error/path/g.html</param-value>
 </init-param>
 <init-param>
   <param-name>url-error-crl-outofdate</param-name>
   <param-value>/some/error/path/h.html</param-value>
 </init-param>
 <init-param>
   <param-name>url-error-cannot-validate-certificate</param-name>
   <param-value>/some/error/path/i.html</param-value>
 </init-param>
</filter>
<filter-mapping>
 <filter-name>CertificateFilter</filter-name>
 <url-pattern>/some/path</url-pattern>

</filter-mapping>

 

 

Back to top


Panel Sistemas Informáticos, S.L.
Pág 1 de 1

 

 

Consejo General de la Abogacía Española
Pág 3 de 3