Uso de la autenticación 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 el 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 HA Cloud:

Para transferir el certificado en un encabezado

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

    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 HA Cloud 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 HA Cloud 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 la sesión en DEBUG (depuración) y examine el archivo zfe.log en busca de entradas como las siguientes:

Attempting to extract certificate from X-SSL-Client-Cert header.
User <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 HA Cloud contiene los certificados de CA de Java. Por lo tanto, el servidor de sesión de HA Cloud 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 la siguiente propiedad del archivo container.properties del servidor de sesión de HA Cloud:

X509.client.cert.issuer=<valor de DN>

Al definir este valor, el valor de DN del emisor debe coincidir exactamente con el DN del emisor del certificado del equilibrador de carga. Si se ha definido el valor del emisor, se realizará una comprobación adicional para garantizar la coincidencia de los emisores y la autorización no se podrá completar en caso de que no coincidan.