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 su aplicación, CIS responde con una solicitud del 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, siga estos pasos:

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

    Después de activar 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 utilizados por los recursos protegidos por la política de 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 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)
      
    5. Establezca la Acción en Bloquear.

    6. 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. El destino URL 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 la solicitud y las solicitudes posteriores sigan adelante.
  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.