Configura la TLS mutua con una CA privada

En esta página, se proporcionan instrucciones para crear una autoridad certificadora (CA) privada mediante Certificate Authority Service y subir tus certificados a un recurso TrustConfig de Certificate Manager.

También debes crear los recursos de seguridad de red necesarios a fin de configurar TLS mutua para los balanceadores de cargas de aplicaciones.

Antes de comenzar

  • Revisa la descripción general de la TLS mutua.
  • Instala Google Cloud CLI. Para obtener una descripción general completa de la herramienta, consulta la descripción general de la CLI de gcloud. Encontrarás comandos relacionados con el balanceo de cargas en la referencia de la API y la CLI de gcloud.

    Si nunca ejecutaste la CLI de gcloud, primero ejecuta gcloud init para autenticarte.

  • Asegúrate de que sabes crear grupos de CA.

  • Si usas el balanceador de cargas de aplicaciones externo global o el balanceador de cargas de aplicaciones clásico, asegúrate de haber configurado un balanceador de cargas con cualquiera de los siguientes backends compatibles:

    • Backends de grupos de instancias de VM
    • Buckets de Cloud Storage (compatibles solo si hay al menos un servicio de backend conectado al balanceador de cargas, además del bucket de backend)
    • Backend de Cloud Run, App Engine o Cloud Run Functions
    • Conectividad híbrida
  • Si usas un balanceador de cargas de aplicaciones externo regional, un balanceador de cargas de aplicaciones interno entre regiones o un balanceador de cargas de aplicaciones interno regional, asegúrate de haber configurado un balanceador de cargas con cualquiera de los siguientes backends admitidos:

    • Backends de grupos de instancias de VM
    • Cloud Run
    • Conectividad híbrida

Permisos

Para obtener los permisos que necesitas a fin de completar esta guía, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

  • Para crear recursos del balanceador de cargas, como TargetHTTPProxy: Administrador de balanceador de cargas de Compute (roles/compute.loadBalancerAdmin)
  • Para usar recursos de Certificate Manager: Propietario de Certificate Manager (roles/certificatemanager.owner)
  • Para crear componentes de seguridad y de herramientas de redes: Administrador de red de Compute (roles/compute.networkAdmin) y Administrador de seguridad de Compute (roles/compute.securityAdmin)
  • Para crear un proyecto (opcional): Creador de proyectos (roles/resourcemanager.projectCreator)

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Crea una AC raíz en el grupo de AC

Para crear una AC raíz en el grupo de AC privado, completa los siguientes pasos:

  1. Para crear un grupo de CA, usa el comando gcloud privateca pools create:

    gcloud privateca pools create CA_POOL \
       --location=us-central1
    

    Reemplaza CA_POOL por el ID o el nombre del grupo de CA superior.

  2. Para crear una AC raíz en el grupo de AC, usa el comando gcloud privateca roots create:

    gcloud privateca roots create CA_ROOT \
       --pool=CA_POOL \
       --subject="CN=my-ca, O=Test LLC" \
       --location=us-central1
    

    Reemplaza lo siguiente:

    • CA_ROOT: Es el ID o el nombre de la AC raíz.
    • CA_POOL: Es el ID o el nombre del grupo de AC superior.
  3. Para describir la CA nueva y crear el archivo root.cert, usa el comando gcloud privateca roots describe:

    gcloud privateca roots describe CA_ROOT \
       --pool=CA_POOL \
       --location=us-central1 \
       --format='value(pemCaCertificates)' > root.cert
    

    Reemplaza lo siguiente:

    • CA_ROOT: El ID o el nombre de la AC privada.
    • CA_POOL: Es el ID o el nombre del grupo de AC superior.
  4. Dale formato al certificado en una sola línea y almacénalo en una variable de entorno para que el archivo YAML de configuración de confianza pueda hacer referencia a él.

    export ROOT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')

    Para obtener más información, consulta lo siguiente:

Crea un recurso de configuración de confianza

Una configuración de confianza es un recurso que representa la configuración de tu infraestructura de clave pública (PKI) en el Administrador de certificados.

Para crear un recurso de configuración de confianza, completa los siguientes pasos:

Console

  1. En la consola de Google Cloud, ve a la página Administrador de certificados.

    Ir al Administrador de certificados

  2. En la pestaña Trust Configs, haz clic en Add Trust Config.

  3. Ingresa un nombre para la configuración.

  4. En Ubicación, selecciona Global o Regional.

    La ubicación indica dónde se almacena el recurso de configuración de confianza. Para los balanceadores de cargas de aplicaciones externos globales, los balanceadores de cargas de aplicaciones clásicos y los balanceadores de cargas de aplicaciones internos entre regiones, crea un recurso de configuración de confianza global. Para los balanceadores de cargas de aplicaciones externos regionales y los balanceadores de cargas de aplicaciones internos regionales, crea un recurso de configuración de confianza regional.

    Si seleccionaste Regional, selecciona la región.

  5. En la sección Trust store, haz clic en Add trust anchor y sube el archivo de certificado con codificación PEM, o bien copia el contenido del certificado.

  6. Haz clic en Agregar.

  7. Haz clic en Crear.

Verifica que el nuevo recurso de configuración de confianza aparezca en la lista de configuraciones.

gcloud

  1. Crea un archivo YAML de configuración de confianza (trust_config.yaml) que especifique los parámetros de configuración de confianza. En este ejemplo, el recurso de configuración de confianza es un almacén de confianza con un único ancla de confianza que representa un certificado raíz. Este certificado raíz se genera con la AC privada.

    cat << EOF > trust_config.yaml
    name: TRUST_CONFIG_NAME
    trustStores:
    - trustAnchors:
        - pemCertificate: "${ROOT?}"
    EOF
    
  2. Para importar el archivo YAML de configuración de confianza, usa el comando gcloud certificate-manager trust-configs import:

    global

    Para los balanceadores de cargas de aplicaciones externos globales, los balanceadores de cargas de aplicaciones clásicos y los balanceadores de cargas de aplicaciones internos entre regiones, especifica global como la ubicación en la que se almacena el recurso de configuración de confianza.

    gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME  \
        --source=trust_config.yaml \
        --location=global
    

    Reemplaza lo siguiente:

    • TRUST_CONFIG_NAME: Es el nombre del recurso de configuración de confianza.

    regional

    Para los balanceadores de cargas de aplicaciones externos regionales y los balanceadores de cargas de aplicaciones internos regionales, especifica la región en la que se almacena el recurso de configuración de confianza.

    gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME  \
        --source=trust_config.yaml \
        --location=LOCATION
    

    Reemplaza lo siguiente:

    • TRUST_CONFIG_NAME: Es el nombre del recurso de configuración de confianza.
    • LOCATION: Es la región en la que se almacena el recurso de configuración de confianza. La ubicación predeterminada es global.

Crea un recurso de autenticación de clientes

Un recurso de autenticación de cliente (también llamado ServerTLSPolicy) te permite especificar el modo de TLS del servidor y el recurso de configuración de confianza que se usará cuando se validen los certificados de cliente. Cuando el cliente presenta un certificado no válido o ningún certificado al balanceador de cargas, clientValidationMode especifica cómo se maneja la conexión del cliente. Para obtener más información, consulta los modos de validación del cliente de mTLS.

  • Cuando clientValidationMode se establece como ALLOW_INVALID_OR_MISSING_CLIENT_CERT, todas las solicitudes se pasan al backend, incluso si la validación falla o si falta el certificado de cliente.
  • Cuando clientValidationMode se establece en REJECT_INVALID, solo las solicitudes que proporcionan un certificado de cliente que se puede validar en un recurso TrustConfig se pasan al backend.

Para crear un recurso de autenticación de cliente (ServerTlsPolicy), completa los siguientes pasos:

Console

  1. En la consola de Google Cloud, ve a la página Autenticación de clientes.

    Ir a Autenticación de clientes

  2. Haz clic en Crear autenticación de clientes.

  3. Ingresa un nombre para el recurso de autenticación de clientes.

  4. En Ubicación, selecciona Global o Regional.

    Para los balanceadores de cargas de aplicaciones externos globales, los balanceadores de cargas de aplicaciones clásicos y los balanceadores de cargas de aplicaciones internos entre regiones, establece la ubicación como global. Para los balanceadores de cargas de aplicaciones externos regionales y los balanceadores de cargas de aplicaciones internos regionales, establece la ubicación en la región en la que se configuró el balanceador de cargas.

  5. En Modo de autenticación de clientes, selecciona Balanceo de cargas.

  6. Selecciona un modo de validación del cliente.

  7. Selecciona el recurso de configuración de confianza que creaste antes.

  8. Haz clic en Crear.

Verifica que se muestre la autenticación de cliente (ServerTlsPolicy).

gcloud

  1. Según cómo desees manejar la conexión, selecciona una de las siguientes opciones para definir el recurso de autenticación de clientes (ServerTlsPolicy) en formato YAML.

    • Opción 1: clientValidationMode se establece en ALLOW_INVALID_OR_MISSING_CLIENT_CERT.

      global

      En el caso de los balanceadores de cargas de aplicaciones externos globales, los balanceadores de cargas de aplicaciones clásicos y los balanceadores de cargas de aplicaciones internos entre regiones, crea un archivo YAML que especifique de forma declarativa el modo de validación del cliente y un recurso de configuración de confianza global:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
          clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
          clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME
      EOF
      

      regional

      Para los balanceadores de cargas de aplicaciones externos regionales y los balanceadores de cargas de aplicaciones internos regionales, crea un archivo YAML que especifique de forma declarativa el modo de validación del cliente y un recurso de configuración de confianza regional:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
          clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
          clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME
      EOF
      
    • Opción 2: clientValidationMode se establece en REJECT_INVALID.

      global

      En el caso de los balanceadores de cargas de aplicaciones externos globales, los balanceadores de cargas de aplicaciones clásicos y los balanceadores de cargas de aplicaciones internos entre regiones, crea un archivo YAML que especifique de forma declarativa el modo de validación del cliente y un recurso de configuración de confianza global:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
          clientValidationMode: REJECT_INVALID
          clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME
      EOF
      

      regional

      Para los balanceadores de cargas de aplicaciones externos regionales y los balanceadores de cargas de aplicaciones internos regionales, crea un archivo YAML que especifique de forma declarativa el modo de validación del cliente y un recurso de configuración de confianza regional:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
            clientValidationMode: REJECT_INVALID
            clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME
      EOF
      

      Reemplaza lo siguiente:

      SERVER_TLS_POLICY_NAME: Es el nombre del recurso de autenticación de clientes (ServerTlsPolicy).

      PROJECT_ID: El ID del proyecto de Google Cloud.

      LOCATION: Para los balanceadores de cargas de aplicaciones externos globales, los balanceadores de cargas de aplicaciones clásicos y los balanceadores de cargas de aplicaciones internos entre regiones, usa global. Para el balanceador de cargas de aplicaciones externo regional o el balanceador de cargas de aplicaciones interno regional, usa la región en la que configuraste el balanceador de cargas.

      TRUST_CONFIG_NAME: Es el nombre del recurso de configuración de confianza que creaste antes.

  2. Para importar el recurso ServerTlsPolicy de autenticación de clientes, usa el comando gcloud network-security server-tls-policies import:

    global

    Para los balanceadores de cargas de aplicaciones externos globales, los balanceadores de cargas de aplicaciones clásicos y los balanceadores de cargas de aplicaciones internos entre regiones, establece la marca --location en global.

    gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \
      --source=server_tls_policy.yaml \
      --location=global
    

    Reemplaza lo siguiente:

    SERVER_TLS_POLICY_NAME: Es el nombre del recurso de autenticación de clientes (ServerTlsPolicy).

    regional

    Para los balanceadores de cargas de aplicaciones externos regionales y los balanceadores de cargas de aplicaciones internos regionales, establece la marca --location en la región en la que está configurado el balanceador de cargas.

    gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \
      --source=server_tls_policy.yaml \
      --location=LOCATION
    

    Reemplaza lo siguiente:

    SERVER_TLS_POLICY_NAME: Es el nombre del recurso de autenticación de clientes (ServerTlsPolicy).

  3. Opcional: Para enumerar todos los recursos de autenticación de clientes (ServerTlsPolicies), usa el comando gcloud network-security server-tls-policies list:

    gcloud network-security server-tls-policies list \
      --location=LOCATION
    

    Reemplaza lo siguiente:

    LOCATION: En el caso de los balanceadores de cargas de aplicaciones externos globales, los balanceadores de cargas de aplicaciones clásicos y los balanceadores de cargas de aplicaciones internos entre regiones, usa global. Para el balanceador de cargas de aplicaciones externo regional o el balanceador de cargas de aplicaciones interno regional, usa la región en la que configuraste el balanceador de cargas.

Adjunta el recurso de autenticación de clientes al balanceador de cargas

Para que la autenticación TLS mutua funcione, después de configurar el balanceador de cargas, debes adjuntar el recurso de autenticación de cliente (ServerTLSPolicy) al recurso de proxy HTTPS de destino del balanceador de cargas.

Console

  1. En la consola de Google Cloud, ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. En la lista de balanceadores de cargas, selecciona el balanceador de cargas al que debes adjuntar el recurso de autenticación de clientes (ServerTLSPolicy).

  3. Haz clic en Editar.

  4. En la sección Configuración de frontend de un frontend HTTPS, expande la sección Mostrar funciones avanzadas.

  5. En la lista Autenticación del cliente, selecciona el recurso de autenticación del cliente.

  6. Haz clic en Listo.

  7. Haz clic en Update.

gcloud

  1. Para obtener una lista de todos los recursos de proxy HTTPS de destino en tu proyecto, usa el comando gcloud compute target-https-proxies list:

    gcloud compute target-https-proxies list
    

    Toma nota del nombre del proxy HTTPS de destino al que conectarás el recurso ServerTLSPolicy. Este nombre se denomina TARGET_HTTPS_PROXY_NAME en los siguientes pasos.

  2. Para exportar la configuración de un proxy HTTPS de destino a un archivo, usa el comando gcloud compute target-https-proxies export.

    global

      gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \
          --destination=TARGET_PROXY_FILENAME \
          --global
      

    Reemplaza lo siguiente:

    • TARGET_HTTPS_PROXY_NAME: el nombre del proxy de destino.
    • TARGET_PROXY_FILENAME: Es el nombre del archivo de configuración del proxy de destino en formato YAML. Por ejemplo, mtls_target_proxy.yaml

    regional

    gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \
        --destination=TARGET_PROXY_FILENAME \
        --region=REGION
    

    Reemplaza lo siguiente:

    • TARGET_HTTPS_PROXY_NAME: el nombre del proxy de destino.
    • TARGET_PROXY_FILENAME: Es el nombre del archivo de configuración del proxy de destino en formato YAML. Por ejemplo, mtls_target_proxy.yaml
    • REGION: la región en la que configuraste el balanceador de cargas.
  3. Para enumerar todos los recursos de autenticación de clientes (ServerTlsPolicy), usa el comando gcloud network-security server-tls-policies list:

    gcloud network-security server-tls-policies list \
        --location=LOCATION
    

    Reemplaza lo siguiente:

    LOCATION: Para el balanceador de cargas de aplicaciones interno entre regiones, el balanceador de cargas de aplicaciones externo global o el balanceador de cargas de aplicaciones clásico, usa global. Para el balanceador de cargas de aplicaciones externo regional o el balanceador de cargas de aplicaciones interno regional, usa la región en la que configuraste el balanceador de cargas.

    Ten en cuenta el nombre del recurso de autenticación de cliente (ServerTLSPolicy) para configurar mTLS. Este nombre se denomina SERVER_TLS_POLICY_NAME en el siguiente paso.

  4. Agrega la autenticación del cliente (ServerTlsPolicy) al proxy HTTPS de destino.

    echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/LOCATION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> TARGET_PROXY_FILENAME

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • LOCATION: Para balanceadores de cargas de aplicaciones externos globales, balanceadores de cargas de aplicaciones clásicos y balanceadores de cargas de aplicaciones internos entre regiones, usa global. Para el balanceador de cargas de aplicaciones externo regional o el balanceador de cargas de aplicaciones interno regional, usa la región en la que configuraste el balanceador de cargas.
    • SERVER_TLS_POLICY_NAME: Es el nombre del recurso de autenticación de clientes (ServerTLSPolicy).
    • TARGET_PROXY_FILENAME: Es el nombre del archivo de configuración del proxy de destino en formato YAML.
  5. Para importar la configuración de un proxy HTTPS de destino desde un archivo, usa el comando gcloud compute target-https-proxies import.

    global

      gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \
          --source=TARGET_PROXY_FILENAME \
          --global
      

    Reemplaza lo siguiente:

    • TARGET_HTTPS_PROXY_NAME: el nombre del proxy de destino.
    • TARGET_PROXY_FILENAME: Es el nombre del archivo de configuración del proxy de destino en formato YAML. Por ejemplo, mtls_target_proxy.yaml

    regional

      gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \
          --source=TARGET_PROXY_FILENAME \
          --region=REGION
      

    Reemplaza lo siguiente:

    • TARGET_HTTPS_PROXY_NAME: el nombre del proxy de destino.
    • TARGET_PROXY_FILENAME: Es el nombre del archivo de configuración del proxy de destino en formato YAML. Por ejemplo, mtls_target_proxy.yaml
    • REGION: la región en la que configuraste el balanceador de cargas.

Agrega encabezados personalizados mTLS

Cuando habilitas mTLS, puedes pasar información sobre la conexión mTLS con encabezados personalizados. También puedes habilitar el registro para que se capturen los errores de conexión mTLS en los registros.

Agrega encabezados personalizados mTLS a los servicios de backend

Para los balanceadores de cargas de aplicaciones externos globales o los balanceadores de cargas de aplicaciones clásicos, puedes usar encabezados personalizados para pasar información sobre la conexión mTLS a los servicios de backend.

  1. Para enumerar todos los servicios de backend del proyecto, usa el comando gcloud compute backend-services list:

    gcloud compute backend-services list
    

    Toma nota del nombre del servicio de backend para habilitar los registros y los encabezados personalizados. Este nombre se denomina BACKEND_SERVICE en el siguiente paso.

  2. Para actualizar el servicio de backend, usa el comando gcloud compute backend-services update:

    gcloud compute backend-services update BACKEND_SERVICE \
      --global \
      --enable-logging \
      --logging-sample-rate=1 \
      --custom-request-header='X-Client-Cert-Present:{client_cert_present}' \
      --custom-request-header='X-Client-Cert-Chain-Verified:{client_cert_chain_verified}' \
      --custom-request-header='X-Client-Cert-Error:{client_cert_error}' \
      --custom-request-header='X-Client-Cert-Hash:{client_cert_sha256_fingerprint}' \
      --custom-request-header='X-Client-Cert-Serial-Number:{client_cert_serial_number}' \
      --custom-request-header='X-Client-Cert-SPIFFE:{client_cert_spiffe_id}' \
      --custom-request-header='X-Client-Cert-URI-SANs:{client_cert_uri_sans}' \
      --custom-request-header='X-Client-Cert-DNSName-SANs:{client_cert_dnsname_sans}' \
      --custom-request-header='X-Client-Cert-Valid-Not-Before:{client_cert_valid_not_before}' \
      --custom-request-header='X-Client-Cert-Valid-Not-After:{client_cert_valid_not_after}'
    

Agrega encabezados personalizados mTLS al mapa de URL

Para los balanceadores de cargas de aplicaciones internos entre regiones, los balanceadores de cargas de aplicaciones externos regionales o los balanceadores de cargas de aplicaciones internos regionales, puedes usar encabezados personalizados para pasar información sobre la conexión mTLS al mapa de URL.

Para enumerar todos los mapas de URL en el proyecto, usa el comando gcloud compute url-maps list:

   gcloud compute url-maps list
   

Toma nota del nombre del mapa de URL para habilitar los encabezados y el registro personalizados. Este nombre se denomina URL_MAP_NAME en el siguiente paso.

global

Para editar el mapa de URL de un balanceador de cargas de aplicaciones interno entre regiones, usa el comando gcloud compute url-maps edit:

   gcloud compute url-maps edit URL_MAP_NAME --global
   

A continuación, se muestra un archivo YAML de muestra que indica cómo usar variables en encabezados de solicitud personalizados (requestHeadersToAdd). Puedes usar las mismas variables para enviar encabezados de respuesta personalizados (responseHeadersToAdd).

   headerAction:
      requestHeadersToAdd:
      - headerName: "X-Client-Cert-Present"
        headerValue: "{client_cert_present}"
      - headerName: "X-Client-Cert-Chain-Verified"
        headerValue: "{client_cert_chain_verified}"
      - headerName: "X-Client-Cert-Error"
        headerValue: "{client_cert_error}"
      - headerName: "X-Client-Cert-Hash"
        headerValue: "{client_cert_sha256_fingerprint}"
      - headerName: "X-Client-Cert-Serial-Number"
        headerValue: "{client_cert_serial_number}"
      - headerName: "X-Client-Cert-SPIFFE"
        headerValue: "{client_cert_spiffe_id}"
      - headerName: "X-Client-Cert-URI-SANs"
        headerValue: "{client_cert_uri_sans}"
      - headerName: "X-Client-Cert-DNSName-SANs"
        headerValue: "{client_cert_dnsname_sans}"
      - headerName: "X-Client-Cert-Valid-Not-Before"
        headerValue: "{client_cert_valid_not_before}"
      - headerName: "X-Client-Cert-Valid-Not-After"
        headerValue: "{client_cert_valid_not_after}"
      - headerName: "X-Client-Cert-Issuer-Dn"
        headerValue: "{client_cert_issuer_dn}"
      - headerName: "X-Client-Cert-Subject-Dn"
        headerValue: "{client_cert_subject_dn}"
      - headerName: "X-Client-Cert-Leaf"
        headerValue: "{client_cert_leaf}"
      - headerName: "X-Client-Cert-Chain"
        headerValue: "{client_cert_chain}"
   

regional

Para editar el mapa de URL de un balanceador de cargas de aplicaciones externo regional o un balanceador de cargas de aplicaciones interno regional, usa el comando gcloud compute url-maps edit:

   gcloud compute url-maps edit URL_MAP_NAME --region=REGION
   

A continuación, se muestra un archivo YAML de muestra que indica cómo usar variables en encabezados de solicitud personalizados (requestHeadersToAdd). Puedes usar las mismas variables para enviar encabezados de respuesta personalizados (responseHeadersToAdd).

   defaultService: regions/REGION/backendServices/BACKEND_SERVICE_1
      name: regional-lb-map
      region: region/REGION
   headerAction:
      requestHeadersToAdd:
      - headerName: "X-Client-Cert-Present"
        headerValue: "{client_cert_present}"
      - headerName: "X-Client-Cert-Chain-Verified"
        headerValue: "{client_cert_chain_verified}"
      - headerName: "X-Client-Cert-Error"
        headerValue: "{client_cert_error}"
      - headerName: "X-Client-Cert-Hash"
        headerValue: "{client_cert_sha256_fingerprint}"
      - headerName: "X-Client-Cert-Serial-Number"
        headerValue: "{client_cert_serial_number}"
      - headerName: "X-Client-Cert-SPIFFE"
        headerValue: "{client_cert_spiffe_id}"
      - headerName: "X-Client-Cert-URI-SANs"
        headerValue: "{client_cert_uri_sans}"
      - headerName: "X-Client-Cert-DNSName-SANs"
        headerValue: "{client_cert_dnsname_sans}"
      - headerName: "X-Client-Cert-Valid-Not-Before"
        headerValue: "{client_cert_valid_not_before}"
      - headerName: "X-Client-Cert-Valid-Not-After"
        headerValue: "{client_cert_valid_not_after}"
      - headerName: "X-Client-Cert-Issuer-Dn"
        headerValue: "{client_cert_issuer_dn}"
      - headerName: "X-Client-Cert-Subject-Dn"
        headerValue: "{client_cert_subject_dn}"
      - headerName: "X-Client-Cert-Leaf"
        headerValue: "{client_cert_leaf}"
      - headerName: "X-Client-Cert-Chain"
        headerValue: "{client_cert_chain}"
   

¿Qué sigue?