Saltar a contenido

Autenticación X.509

La autenticación de cliente X.509 permite a los clientes autenticarse en servidores con certificados en lugar de con un nombre de usuario y una contraseña aprovechando la infraestructura de clave pública X.509 (PKI) estándar.

icono de mss MSS incluye información adicional sobre la configuración de X.509.

Habilitar la autenticación de cliente X.509

  • Cuando el usuario accede al cliente Web mediante TLS, el navegador envía un certificado al servidor de sesión que identifica al usuario final y completa el protocolo de enlace TLS.

  • El servidor de sesión hace referencia a su almacén de confianza para comprobar el certificado del cliente y verificar su confianza.

  • Una vez completada la negociación TLS (el servidor de sesión confía en el usuario final), el servidor de sesión envía el certificado público del usuario final a MSS para su posterior validación.

  • MSS también comprueba que se confía en el certificado de los usuarios finales mediante su almacén de confianza.

  • Cuando MSS finalice la validación, el usuario final se habrá autenticado correctamente.

La cadena de certificado completa del cliente debe estar presente en el servidor de sesión y en los almacenes de confianza de MSS o también puede estar firmada por una autoridad certificadora presente en los almacenes de confianza.

El navegador determina el certificado de cliente que se enviará mediante una configuración específica del navegador o la tarjeta inteligente.

Pasos básicos

  1. Confíe en los certificados en el servidor de sesión y MSS si aún no lo ha hecho.

  2. Reinicie los servidores.

  3. Configure X.509 en la Consola Administrativa de MSS.

Confiar en el certificado en MSS y el servidor de sesión

  • Confiar en el certificado en MSS

    El almacén de confianza de MSS puede contener ya su certificado de autoridad firmante. Éste suele ser el caso con autoridades firmantes de certificados bien conocidas y, de ser así, puede saltarse este paso.

    Para comprobarlo:

    • Abra la Consola Administrativa, haga clic en Configurar parámetros y abra la ficha Certificados de confianza. Abra Trusted Root Certificate Authorities (Autoridades certificadoras raíz de confianza) para ver una lista de los certificados disponibles.

    • Si el certificado no se encuentra en la lista, deberá instalar la CA raíz firmante en MSS mediante las indicaciones y la documentación de la Consola Administrativa.

  • Confiar en el certificado en el servidor de sesión

    Para instalar el certificado en el servidor de sesión:

    En <directorio_de_instalación>\sessionserver\etc, importe el certificado:

    keytool -importcert -file <cert-file> -alias <alias-to-store-cert-under> 
    -keystore trustcerts.bcfks -storetype bcfks -providername BCFIPS 
    -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider 
    -providerpath ../lib/bc-fips-*.jar -storepass changeit

Reinicie todos los servidores

Para que la configuración tenga efecto, deberá reiniciar todos los servidores.

Configurar X.509 con LDAP a prueba de fallos en la Consola Administrativa de MSS

Una vez instalados los certificados, puede habilitar X.509 con la opción para volver a la autenticación LDAP en Consola Administrativa del Servidor de Administración y Seguridad | Configurar parámetros | Autenticación y autorización. Consulte la ayuda en línea de la Consola Administrativa para obtener descripciones de las opciones de configuración.

Habilitación de X.509 mediante un equilibrador de carga configurado para la finalización de TLS

En esta configuración, el equilibrador de carga proporciona autenticación de usuario final al validar su certificado de cliente. Sin embargo, el certificado de cliente debe enviarse a todos los sistemas de MSS para poder identificar al usuario de entrada.

Si el equilibrador de carga se ha configurado para finalizar la conexión TLS, el certificado del usuario puede añadirse a un encabezado HTTP; el servidor de sesión puede extraerlo y, a continuación, transferirlo a MSS para la autorización. Para transferir el certificado en un encabezado, defina primero el nombre del encabezado en el archivo container.properties del servidor de sesión de HACloud:

Para transferir el certificado en un encabezado

  1. Defina el nombre del encabezado en el archivo container.properties del servidor de sesión de HACloud:

    x509.header.client.cert=X-SSL-Client-Cert

  2. Defina el valor de encabezado en el certificado del usuario, en la configuración del equilibrador de carga. Por ejemplo, mediante una iRule de BigIP:

    HTTP::header insert X-SSL-Client-Cert [URI::encode $client_cert]

    En este caso, se presupone que $client_cert se ha definido en el certificado del usuario en formato PEM. Si el certificado del usuario está en formato DER, utilice la codificación Base64:

    HTTP::header insert X-SSL-Client-Cert [b64encode $client_cert]

    La codificación del certificado garantiza que el valor del encabezado sea una línea de texto ASCII. Esto es necesario para que el servidor de sesión de HACloud lea el valor.

    Nota

    La autenticación del certificado de cliente debe realizarse entre el equilibrador de carga y el servidor de sesión. El equilibrador de carga debe configurarse para que envíe su certificado al servidor de sesión y la CA del equilibrador de carga debe estar presente en el almacén de confianza del servidor de sesión.

  3. Después de configurar el equilibrador de carga para que envíe su certificado al servidor de sesión de HACloud y de configurar el certificado del usuario para que se transfiera en el encabezado, reinicie el servidor de sesión.

Si se conecta con un certificado o una tarjeta inteligente a través del equilibrador de carga, la autenticación y la autorización como el usuario representado por el certificado se completarán correctamente. Para verificar el funcionamiento correcto, defina el nivel de registro del servidor de sesión en DEBUG (depuración) y examine el archivo sessionserver.log en busca de entradas como las siguientes:

Attempting to extract certificate from X-SSL-Client-Cert header. 
User <DN value> has been preauthenticated from <IP address>. 
(Intentando extraer el certificado del encabezado X-SSL-Client-cert. 
El valor <valor de DN> del usuario se ha autenticado previamente desde <dirección IP>).

Configuración adicional

Por defecto, el almacén de confianza del servidor de sesión de HACloud contiene los certificados de CA de Java. Por lo tanto, el servidor de sesión de HACloud aceptará cualquier certificado de cliente firmado por CA conocidas. Para garantizar que solo los equilibradores de carga deseados se conecten al servidor de sesión, debe eliminar los certificados de CA de Java del almacén de confianza y asegurarse de que solo los certificados necesarios estén instalados en el almacén de confianza.

Para filtrar los certificados de cliente permitidos por nombre completo (DN) del emisor, defina las siguientes propiedades del archivo container.properties del servidor de sesión de HACloud:

X509.client.cert.issuer=<Valor de DN> 
X509.client.cert.subject=<Valor de DN del asunto> 
X509.client.cert.serial=<Número de serie> 
X509.client.cert.sha1=<Huella SHA1> 
X509.client.cert.sha256=<Huella SHA256>
Los valores de DN deben coincidir exactamente con el emisor de certificado o el nombre completo (DN) del asunto del equilibrador de carga. El valor de número de serie debe ser un valor decimal (base 10). Los valores de huella SHA1 y SHA256 se deben especificar en formato hexadecimal. Una vez que se haya definido alguna de estas propiedades, se comprobarán los atributos del certificado entrante para garantizar que coincidan con los valores de propiedades especificados. No se podrá completar la autorización si alguno de estos valores no coinciden.