Un certificado de cliente válido debe mostrar una cadena de confianza que se remonte al ancla de confianza en el almacén de confianza. En esta página se explica cómo crear tu propia cadena de confianza con el certificado raíz de una AC privada (autoridad de certificación) que tú controlas. En esta configuración, la AC privada se crea mediante el Servicio de Autoridades de Certificación.
Una vez que haya obtenido el certificado raíz de la CA privada, en este documento se describe el proceso para subir el certificado al almacén de confianza del recurso TrustConfig
de Certificate Manager. A continuación, se vincula la configuración de confianza al recurso de autenticación de cliente (ServerTLSPolicy
) y, después, se adjunta el recurso de autenticación de cliente al recurso de proxy HTTPS de destino del balanceador de carga.
Antes de empezar
- Consulta la descripción general de TLS mutuo.
- Consulta la guía para gestionar las configuraciones de confianza.
Instala Google Cloud CLI. Para obtener una descripción general completa de la herramienta, consulta la información general sobre la CLI de gcloud. Puedes encontrar comandos relacionados con el balanceo de carga en la referencia de la API y de gcloud CLI.
Si no has ejecutado la CLI de gcloud anteriormente, ejecuta primero
gcloud init
para autenticarte.Consulta la guía para crear un grupo de ACs.
Si usas un balanceador de carga de aplicación externo global o un balanceador de carga de aplicación clásico, asegúrate de haber configurado un balanceador de carga con alguno de los siguientes backends admitidos:
- Backends de grupos de instancias de VM
- Segmentos de Cloud Storage (Solo se admite si hay al menos un servicio de backend asociado al balanceador de carga, además del segmento de backend)
- Cloud Run, App Engine o Cloud Run Functions
- Conectividad híbrida
Si usas un balanceador de carga de aplicaciones externo regional, un balanceador de carga de aplicaciones interno entre regiones o un balanceador de carga de aplicaciones interno regional, asegúrate de haber configurado un balanceador de carga 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 para completar esta guía, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto:
-
Para crear recursos de balanceador de carga, como
TargetHTTPProxy
, haz lo siguiente: Administrador de balanceadores de carga de Compute (roles/compute.loadBalancerAdmin
) -
Para usar los recursos de Certificate Manager, debes tener uno de los siguientes roles:
Propietario de Certificate Manager (
roles/certificatemanager.owner
) -
Para crear componentes de seguridad y de red, haz lo siguiente:
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 conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Obtener el certificado de la AC raíz
La AC raíz tiene un certificado autofirmado que debes añadir al almacén de confianza. El certificado de la AC raíz se encuentra en la parte superior de la cadena de certificados.
Para obtener el certificado de la AC raíz, primero debes crear un grupo de ACs, que estará vacío al crearse. A continuación, debes crear una AC raíz y añadirla al grupo de ACs. La AC raíz y el grupo de ACs se crean mediante el Servicio de Autoridades de Certificación, tal como se indica en los pasos siguientes.
Para crear un grupo de ACs, usa el comando
gcloud privateca pools create
:gcloud privateca pools create CA_POOL \ --location=us-central1
Sustituye
CA_POOL
por el ID o el nombre del grupo de ACs principal.Para crear una AC raíz y añadirla al grupo de ACs, 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
Haz los cambios siguientes:
CA_ROOT
: el ID o el nombre de la CA raíz.CA_POOL
: el ID o el nombre del grupo de AC principal.
Extrae el certificado codificado en PEM que identifica la AC raíz.
gcloud privateca roots describe CA_ROOT \ --pool=CA_POOL \ --location=us-central1 \ --format='value(pemCaCertificates)' > root.cert
Haz los cambios siguientes:
CA_ROOT
: el ID o el nombre de la CA privada.CA_POOL
: el ID o el nombre del grupo de AC principal.
El certificado raíz (
root.cert
) debe subirse al almacén de confianza. Este paso se llevará a cabo en la siguiente sección.
Para obtener más información sobre cómo usar Servicio de Autoridades de Certificación para crear un grupo de ACs y una AC raíz, consulta los siguientes artículos:
Formatear el certificado de la AC raíz
Para incluir el certificado raíz en un almacén de confianza, dale formato de una sola línea y guárdalo en una variable de entorno para que se pueda hacer referencia a él en el archivo YAML de configuración de confianza.
export ROOT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Crear un recurso de configuración de confianza
Una configuración de confianza es un recurso que representa tu configuración de infraestructura de clave pública (PKI) en Certificate Manager.
Para crear un recurso de configuración de confianza, sigue estos pasos:
Consola
En la Google Cloud consola, ve a la página Gestor de certificados.
En la pestaña Configuraciones de confianza, haz clic en Añadir configuración de confianza.
Introduce un nombre para la configuración.
En Ubicación, selecciona Global o Regional.
La ubicación indica dónde se almacena el recurso de configuración de confianza. En el caso de los balanceadores de carga de aplicación externos globales, los balanceadores de carga de aplicación clásicos y los balanceadores de carga de aplicación internos entre regiones, crea un recurso global trust config. En el caso de los balanceadores de carga de aplicación externos regionales y los balanceadores de carga de aplicación internos regionales, crea un recurso de configuración de confianza regional.
Si has seleccionado Regional, selecciona la región.
En la sección Almacén de confianza, haz clic en Añadir ancla de confianza y sube el archivo de certificado codificado en PEM o copia el contenido del certificado.
Haz clic en Añadir.
Haz clic en Crear.
Comprueba que el nuevo recurso de configuración de confianza aparezca en la lista de configuraciones.
gcloud
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 solo anclaje 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
Para importar el archivo YAML de configuración de confianza, usa el comando
gcloud certificate-manager trust-configs import
:Mundial
En el caso de los balanceadores de carga de aplicación externos globales, los balanceadores de carga de aplicación clásicos y los balanceadores de carga de aplicación 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
Haz los cambios siguientes:
TRUST_CONFIG_NAME
: el nombre del recurso de configuración de confianza.
regional
En el caso de los balanceadores de carga de aplicaciones externos regionales y los balanceadores de carga 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
Haz los cambios siguientes:
TRUST_CONFIG_NAME
: el nombre del recurso de configuración de confianza.LOCATION
: la región en la que se almacena el recurso de configuración de confianza. La ubicación predeterminada esglobal
.
Crear un recurso ClientAuthentication
Un recurso de autenticación de cliente (también llamado ServerTLSPolicy
) te permite especificar el modo TLS del lado del servidor y el recurso de configuración de confianza que se debe usar al validar los certificados de cliente. Cuando el cliente presenta un certificado no válido o ningún certificado al balanceador de carga, clientValidationMode
especifica cómo se gestiona la conexión del cliente. Para obtener más información, consulta Modos de validación de clientes de mTLS.
- Si
clientValidationMode
tiene el valorALLOW_INVALID_OR_MISSING_CLIENT_CERT
, todas las solicitudes se envían al backend aunque la validación falle o falte el certificado de cliente. - Cuando
clientValidationMode
se define comoREJECT_INVALID
, solo se envían al backend las solicitudes que proporcionan un certificado de cliente que se puede validar con un recursoTrustConfig
.
Para crear un recurso de autenticación de cliente (ServerTlsPolicy
),
sigue estos pasos:
Consola
En la consola, ve a la página Configuración de autenticación. Google Cloud
En la pestaña Autenticación de cliente, haz clic en Crear.
Introduce un nombre para el recurso Client Authentication.
En Ubicación, selecciona Global o Regional.
En el caso de los balanceadores de carga de aplicación externos globales, los balanceadores de carga de aplicación clásicos y los balanceadores de carga de aplicación internos entre regiones, define la ubicación como global. En el caso de los balanceadores de carga de aplicación externos regionales y los balanceadores de carga de aplicación internos regionales, define la ubicación como la región en la que se ha configurado el balanceador de carga.
En Modo de autenticación de cliente, selecciona Balanceo de carga.
Selecciona un modo de validación de cliente.
Selecciona el recurso de configuración de confianza que has creado anteriormente.
Haz clic en Crear.
Comprueba que se muestre Autenticación de cliente (ServerTlsPolicy
).
gcloud
En función de cómo quieras gestionar la conexión, selecciona una de las siguientes opciones para definir el recurso de autenticación de cliente (
ServerTlsPolicy
) en formato YAML.Opción 1:
clientValidationMode
está configurado comoALLOW_INVALID_OR_MISSING_CLIENT_CERT
.Mundial
En el caso de los balanceadores de carga de aplicación externos globales, los balanceadores de carga de aplicación clásicos y los balanceadores de carga de aplicación internos entre regiones, crea un archivo YAML que especifique de forma declarativa el modo de validación de 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
En el caso de los balanceadores de carga de aplicaciones externos regionales y los balanceadores de carga de aplicaciones internos regionales, crea un archivo YAML que especifique de forma declarativa el modo de validación de clientes 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
está configurado comoREJECT_INVALID
.Mundial
En el caso de los balanceadores de carga de aplicación externos globales, los balanceadores de carga de aplicación clásicos y los balanceadores de carga de aplicación internos entre regiones, crea un archivo YAML que especifique de forma declarativa el modo de validación de 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
En el caso de los balanceadores de carga de aplicaciones externos regionales y los balanceadores de carga de aplicaciones internos regionales, crea un archivo YAML que especifique de forma declarativa el modo de validación de clientes 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
Haz los cambios siguientes:
SERVER_TLS_POLICY_NAME
: el nombre del recurso de autenticación de cliente (ServerTlsPolicy
).PROJECT_ID
: el ID de tu proyecto de Google Cloud .LOCATION
: en el caso de los balanceadores de carga de aplicación externos globales, los balanceadores de carga de aplicación clásicos y los balanceadores de carga de aplicación internos entre regiones, usaglobal
. En el caso de los balanceadores de carga de aplicación externos regionales o los balanceadores de carga de aplicación internos regionales, usa la región en la que hayas configurado el balanceador de carga.TRUST_CONFIG_NAME
: el nombre del recurso de configuración de confianza que has creado anteriormente.
Para importar el recurso
ServerTlsPolicy
de autenticación de cliente, usa el comandogcloud network-security server-tls-policies import
:Mundial
En el caso de los balanceadores de carga de aplicación externos globales, los balanceadores de carga de aplicación clásicos y los balanceadores de carga de aplicación internos entre regiones, asigna el valor
global
a la marca--location
.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=global
Haz los cambios siguientes:
SERVER_TLS_POLICY_NAME
: el nombre del recurso de autenticación de cliente (ServerTlsPolicy
).regional
En el caso de los balanceadores de carga de aplicación externos regionales y los balanceadores de carga de aplicación internos regionales, define la marca
--location
en la región en la que esté configurado el balanceador de carga.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=LOCATION
Haz los cambios siguientes:
SERVER_TLS_POLICY_NAME
: el nombre del recurso de autenticación de cliente (ServerTlsPolicy
).Opcional: Para enumerar todos los recursos de autenticación de cliente (
ServerTlsPolicies
), usa el comandogcloud network-security server-tls-policies list
:gcloud network-security server-tls-policies list \ --location=LOCATION
Haz los cambios siguientes:
LOCATION
: En el caso de los balanceadores de carga de aplicación externos globales, los balanceadores de carga de aplicación clásicos y los balanceadores de carga de aplicación internos entre regiones, usaglobal
. En el caso de los balanceadores de carga de aplicación externos regionales o los balanceadores de carga de aplicación internos regionales, usa la región en la que hayas configurado el balanceador de carga.
Asocia el recurso ClientAuthentication al balanceador de carga
Para que la autenticación TLS mutua funcione, después de configurar el balanceador de carga, debes asociar el recurso de autenticación de cliente (ServerTLSPolicy
) al recurso de proxy HTTPS de destino del balanceador de carga.
Consola
En la Google Cloud consola, ve a la página Balanceo de carga.
En la lista de balanceadores de carga, selecciona el balanceador de carga al que quieras adjuntar el recurso de autenticación de cliente (
ServerTLSPolicy
).Haz clic en
Editar.En la sección Configuración de frontend de un frontend HTTPS, despliega la sección Mostrar funciones avanzadas.
En la lista Client Authentication (Autenticación de cliente), selecciona el recurso Client Authentication (Autenticación de cliente).
Haz clic en Listo.
Haz clic en Actualizar.
gcloud
Para enumerar todos los recursos de proxy HTTPS de destino de tu proyecto, usa el comando
gcloud compute target-https-proxies list
:gcloud compute target-https-proxies list
Anota el nombre del proxy HTTPS de destino al que quieras adjuntar el recurso
ServerTLSPolicy
. En los pasos siguientes, nos referiremos a este nombre comoTARGET_HTTPS_PROXY_NAME
.Para exportar la configuración de un proxy HTTPS de destino a un archivo, usa el comando
gcloud compute target-https-proxies export
.Mundial
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --global
Haz los cambios siguientes:
TARGET_HTTPS_PROXY_NAME
: el nombre del proxy de destino.TARGET_PROXY_FILENAME
: 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
Haz los cambios siguientes:
TARGET_HTTPS_PROXY_NAME
: el nombre del proxy de destino.TARGET_PROXY_FILENAME
: 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 ha configurado el balanceador de carga.
Para obtener una lista de todos los recursos de autenticación de cliente (
ServerTlsPolicy
), usa el comandogcloud network-security server-tls-policies list
:gcloud network-security server-tls-policies list \ --location=LOCATION
Haz los cambios siguientes:
LOCATION
: para el balanceador de carga de aplicación interno entre regiones, el balanceador de carga de aplicación externo global o el balanceador de carga de aplicación clásico, usaglobal
. En el caso de los balanceadores de carga de aplicación externos regionales o los balanceadores de carga de aplicación internos regionales, usa la región en la que hayas configurado el balanceador de carga.Anota el nombre del recurso de autenticación de cliente (
ServerTLSPolicy
) para configurar mTLS. En el siguiente paso, se hará referencia a este nombre comoSERVER_TLS_POLICY_NAME
.Añade la autenticación de 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
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu proyecto de Google Cloud .LOCATION
: para los balanceadores de carga de aplicación externos globales o los balanceadores de carga de aplicación clásicos, y los balanceadores de carga de aplicación internos multirregión, usaglobal
. En el caso de los balanceadores de carga de aplicación externos regionales o los balanceadores de carga de aplicación internos regionales, usa la región en la que hayas configurado el balanceador de carga.SERVER_TLS_POLICY_NAME
: el nombre del recurso de autenticación de cliente (ServerTLSPolicy
).TARGET_PROXY_FILENAME
: el nombre del archivo de configuración del proxy de destino en formato YAML.
Para importar la configuración de un proxy HTTPS de destino desde un archivo, usa el comando
gcloud compute target-https-proxies import
.Mundial
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --global
Haz los cambios siguientes:
TARGET_HTTPS_PROXY_NAME
: el nombre del proxy de destino.TARGET_PROXY_FILENAME
: 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
Haz los cambios siguientes:
TARGET_HTTPS_PROXY_NAME
: el nombre del proxy de destino.TARGET_PROXY_FILENAME
: 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 ha configurado el balanceador de carga.
Añadir encabezados personalizados de mTLS
Cuando habilitas mTLS, puedes transferir información sobre la conexión mTLS mediante encabezados personalizados. También puedes habilitar el registro para que los errores de conexión mTLS se registren.
Añadir encabezados personalizados de mTLS a servicios de backend
En el caso de los balanceadores de carga de aplicación externos globales o los balanceadores de carga de aplicación clásicos, puedes usar encabezados personalizados para transferir información sobre la conexión mTLS a los servicios de backend.
Para enumerar todos los servicios de backend del proyecto, usa el comando
gcloud compute backend-services list
:gcloud compute backend-services list
Anota el nombre del servicio de backend para habilitar los encabezados personalizados y el registro. En el siguiente paso, se hará referencia a este nombre como
BACKEND_SERVICE
.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}'
Añadir encabezados personalizados de mTLS al mapa de URLs
En el caso de los balanceadores de carga de aplicación internos entre regiones, los balanceadores de carga de aplicación externos regionales o los balanceadores de carga de aplicación internos regionales, puedes usar encabezados personalizados para transferir información sobre la conexión mTLS al mapa de URLs.
Para ver una lista con todos los mapas de URLs del proyecto, usa el comando
gcloud compute url-maps list
:
gcloud compute url-maps list
Anota el nombre del mapa de URLs para habilitar los encabezados personalizados y el registro.
En el siguiente paso, se hará referencia a este nombre como URL_MAP_NAME
.
Mundial
Para editar el mapa de URLs de un balanceador de carga de aplicación 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 ejemplo que explica 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 URLs de un balanceador de carga de aplicación externo regional o de un balanceador de carga de aplicación 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 ejemplo que explica 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}"
Obtener un certificado de cliente mediante una CSR
En esta sección se ofrece una opción de configuración adicional para generar un certificado de cliente (hoja) firmado por el certificado de la AC raíz.
Para obtener un certificado de cliente, genera una solicitud de firma de certificado (CSR) y envíala al grupo de autoridades de certificación.
Crea un archivo de configuración de OpenSSL para generar la CSR del certificado de cliente.
El siguiente archivo de configuración (
client.config
) contiene la sección[extension_requirements]
, que especifica las extensiones X.509 que se deben incluir en la CSR. Para obtener más información sobre los requisitos de los certificados de cliente, consulta Requisitos de los certificados.cat > client.config << EOF [req] default_bits = 2048 req_extensions = extension_requirements distinguished_name = dn_requirements prompt = no [extension_requirements] basicConstraints = critical, CA:FALSE keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth [dn_requirements] countryName = US stateOrProvinceName = California localityName = San Francisco 0.organizationName = example organizationalUnitName = test commonName = test.example.com emailAddress = test@example.com EOF
Ejecuta el siguiente comando
openssl
para generar una CSR (csr.pem
) y una clave privada correspondiente (key.pem
).openssl req -newkey rsa:2048 -nodes \ -config client.config \ -keyout key.pem \ -out csr.pem
Ejecuta el siguiente
gcloud privateca certificates create
comando para enviar la CSR y solicitar el certificado de cliente X.509 a la AC del grupo de ACs.gcloud privateca certificates create \ --issuer-pool CA_POOL \ --issuer-location=us-central1 \ --csr csr.pem \ --cert-output-file CERT_FILENAME
Haz los cambios siguientes:
CA_POOL
: el ID o el nombre del grupo de autoridades de certificación.CERT_FILENAME
: el archivo de cadena de certificados codificado en PEM, ordenado de hoja a raíz.
Envía una solicitud HTTPS segura a la dirección IP del balanceador de carga mediante el certificado SSL del lado del cliente. El cliente presenta su certificado para autenticarse en el balanceador de carga.
curl -v --key key.pem --cert CERT_FILENAME https://IP_ADDRESS
Haz los cambios siguientes:
CERT_FILENAME
: el archivo de cadena de certificados codificado en PEM que está ordenado de hoja a raíz.IP_ADDRESS
: la dirección IP del balanceador de carga.