Utilización de TLS mutuo

La autenticación Mutual Transport Layer Security (mTLS) garantiza que el tráfico es seguro y fiable en las dos direcciones entre un cliente y un servidor. Sólo está disponible para clientes de cualquier nivel del plan Enterprise.

Cuando mTLS está configurado, el acceso solo se otorga a solicitudes con un correspondiente certificado de cliente. Cuando una solicitud llega a tu aplicación, CIS responde solicitando el certificado del cliente. Si el cliente no presenta el certificado, la solicitud no puede proceder. De lo contrario, el intercambio de llaves procede.

Diagrama de un apretón de manos mTLS
Diagrama de un apretón de manos mTLS

Configuración de TLS mutuo

Mutual TLS ( mTLS ) proporciona autenticación de clientes basada en certificados para mejorar la seguridad. mTLS no está activada por defecto y requiere autorización previa por dominio. Para configurar mTLS,, sigue estos pasos:

  1. Solicitar autorización. Cree un caso de soporte para solicitar la habilitación de mTLS para su cuenta de IBM Cloud.

    Una vez activada la función « mTLS », no se puede desactivar.

  2. Activar mTLS:

    1. En la consola CIS, haga clic en Seguridad y seleccione la pestaña Mutua TLS.
    2. Pulse Habilitar.
  3. Cargar certificados raíz:

    1. En la tabla Certificados raíz de la página Mutua TLS, haga clic en Añadir para definir un nuevo certificado raíz.

    2. Pegue el contenido del certificado en el campo Contenido del certificado. Proporcione un nombre para el certificado de CA raíz y añada uno o varios nombres de dominio completos (FQDN) de los extremos que utilizarán este certificado.

      Estos FQDN son los nombres de host que utilizan los recursos protegidos por la política de la aplicación « mTLS ». Debe asociar la CA Raíz con el FQDN utilizado por la aplicación protegida.

    3. Pulse Guardar.

      Si utiliza un certificado intermedio, cargue la cadena de certificados completa.

  4. Crear una política de acceso de « mTLS »:

    1. En la tabla de políticas de acceso MTLS de la página Mutua TLS, haga clic en Crear para crear una aplicación de acceso.

    2. Seleccione o introduzca un nombre de host que coincida con uno de los FQDN asociados al certificado raíz cargado y haga clic en Crear.

      La política de aplicación está preconfigurada para utilizar una decisión de non_identity, e incluir una regla que coincida con cualquier certificado de cliente válido.

  5. Habilite el reenvío de certificados de cliente con la API:

    Para reenviar certificados de cliente validados a su servidor de origen (útil para registro, auditoría o autenticación back-end), debe habilitar el reenvío.

    El certificado del cliente sólo se envía con la primera solicitud de cada conexión mTLS.

    Si desea ver un ejemplo de API curl para activar el reenvío de certificados de cliente, consulte la API de configuración de certificados de acceso de actualización.

    Cabeceras de certificado de cliente enviadas a su servidor de origen:

    • Cf-Client-Cert-Der-Base64: Base64-encoded DER versión del certificado del cliente
    • Cf-Client-Cert-Sha256 SHA-256 huella digital del certificado del cliente

    Para verificar el estado del reenvío con la API:

    curl -X GET https://api.cis.cloud.ibm.com/v1/crn:v1:bluemix:public:internet-svcs:global:a/<account-id>:<instance-id>::/zones/<zone-id>/access/certificates/settings \
     -H 'X-Auth-User-Token: Bearer <IAM-TOKEN>'
    
  6. Cree una regla personalizada WAF para bloquear las solicitudes no autenticadas:

    Para mejorar la seguridad, especialmente para puntos finales sensibles como rutas de inicio de sesión o API, cree una regla WAF para bloquear las solicitudes que no presenten un certificado de cliente válido.

    1. En la consola CIS, vuelva a la sección Seguridad y seleccione la pestaña Reglas personalizadas.
    2. Pulse Crear.
    3. En el panel lateral Crear regla personalizada WAF, haga clic en Usar editor de expresiones.
    4. Introduzca la siguiente condición (actualice hostname y path según sea necesario) en el campo Utilizar creador de expresiones.
       (http.host eq "example.com" and http.request.uri.path eq "/authenticate" and not cf.tls_client_auth.cert_verified)
    
    1. Establece la acción en « Bloquear ».
    2. Pulse Crear.

    Esta regla permite el acceso para autenticarse sólo si el certificado del cliente se verifica correctamente. Se bloquean las solicitudes sin mTLS o con certificados no válidos.

Comprobación del acceso a mTLS

El siguiente ejemplo utiliza curl para probar la autenticación mTLS realizando peticiones con y sin certificado de cliente.

  1. Intento de acceder al sitio sin un certificado de cliente.

    Este ejemplo demuestra el uso de curl para probar el acceso a un sitio que impone mTLS. La dirección URL a la que se hace referencia en este ejemplo es https://auth.example.com.

    curl -sv https://auth.example.com
    

    Dado que no se proporciona ningún certificado de cliente, se espera que la solicitud falle con una respuesta 403 Forbidden.

  2. Añade tu certificado de cliente y clave privada a la solicitud:

    curl -sv https://auth.example.com --cert example.pem --key key.pem
    

    Si el cliente está correctamente autenticado, la respuesta incluye una cabecera CF_Authorization Set-Cookie, que indica que la autenticación mTLS se ha realizado correctamente.

Validación de TLS mutuo

Cuando habilite esta política de acceso, utilice el siguiente flujo de trabajo para validar los certificados de cliente:

Todas las solicitudes al origen se evalúan para un certificado de cliente válido.

  1. El cliente inicia una conexión enviando un mensaje Hello.
  2. La aplicación de acceso responde con un Hello y solicita el certificado del cliente.
  3. El cliente envía su certificado para su validación.
  4. El certificado del cliente se autentica contra la autoridad de certificación raíz configurada.
  5. Si se utiliza una cadena de certificados, el sistema también comprueba si hay certificados caducados y valida toda la cadena.
  6. Si el certificado del cliente es de confianza, se genera un token web JSON (JWT) firmado para el cliente que permite que se procese la solicitud y las solicitudes posteriores.
  7. Si el cliente no presenta un certificado válido, el servidor devuelve una respuesta 403 Forbidden.

Para recuperar certificados de acceso con la API, consulte Lista de certificados de acceso.