Um certificado de cliente válido tem de apresentar uma cadeia de confiança que remeta para a âncora de confiança (certificado de raiz) no repositório fidedigno. Esta página fornece instruções para criar a sua própria cadeia de confiança configurando os seus próprios certificados de raiz e intermédios através da biblioteca OpenSSL.
Depois de criar as origens de confiança, este documento descreve o processo de carregamento das mesmas para o repositório de confiança do recurso TrustConfig
Certificate Manager. Segue-se a associação da configuração de confiança ao recurso de autenticação de cliente (ServerTLSPolicy
) e, em seguida, a anexação do recurso de autenticação de cliente ao recurso de proxy HTTPS de destino do equilibrador de carga.
Antes de começar
- Reveja a vista geral do TLS mútuo.
- Reveja o guia para gerir configurações de confiança.
Instale a CLI do Google Cloud. Para uma vista geral completa da ferramenta, consulte a vista geral da CLI gcloud. Pode encontrar comandos relacionados com o equilíbrio de carga na referência da API e da CLI gcloud.
Se não tiver executado a CLI gcloud anteriormente, execute primeiro o comando
gcloud init
para fazer a autenticação.Ative as seguintes APIs: API Compute Engine, API Certificate Manager, segurança de rede e API Network Services. Para saber mais, consulte o artigo Ativar APIs.
Se estiver a usar o balanceador de carga de aplicações externo global ou o balanceador de carga de aplicações clássico, certifique-se de que configurou um balanceador de carga com qualquer um dos seguintes back-ends suportados:
- Back-ends do grupo de instâncias de VM
- Contentores do Cloud Storage (Suportados apenas se existir, pelo menos, um serviço de back-end também associado ao balanceador de carga, além do contentor de back-end)
- Cloud Run, App Engine ou funções do Cloud Run
- Conetividade híbrida
- Back-ends do Private Service Connect
Se estiver a usar um Application Load Balancer externo regional, um Application Load Balancer interno entre regiões ou um Application Load Balancer interno regional, certifique-se de que configurou um balanceador de carga com qualquer um dos seguintes back-ends suportados:
- Back-ends do grupo de instâncias de VM
- Cloud Run
- Conetividade híbrida
- Back-ends do Private Service Connect
Defina o projeto.
gcloud
gcloud config set project PROJECT_ID
Autorizações
Para receber as autorizações de que precisa para concluir este guia, peça ao seu administrador para lhe conceder as seguintes funções da IAM no projeto:
-
Para criar recursos do balanceador de carga, como
TargetHTTPSProxy
: Administrador do balanceador de carga do Compute (roles/compute.loadBalancerAdmin
) -
Para usar os recursos do Gestor de certificados:
Proprietário do Gestor de certificados (
roles/certificatemanager.owner
) -
Para criar componentes de segurança e rede:
Administrador de rede de computação (
roles/compute.networkAdmin
) e administrador de segurança de computação (roles/compute.securityAdmin
) -
Para criar um projeto (opcional):
Criador do projeto (
roles/resourcemanager.projectCreator
)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Crie os certificados de raiz e intermédios
Esta secção usa a biblioteca OpenSSL para criar o certificado de raiz (ponto de confiança) e o certificado intermédio.
Um certificado de raiz está no topo da cadeia de certificados. Um certificado intermédio faz parte da cadeia de confiança que remete para o certificado de raiz. O certificado intermédio é assinado criptograficamente pelo certificado de raiz. Quando o equilibrador de carga recebe um certificado de cliente, valida-o estabelecendo uma cadeia de fidedignidade a partir do certificado de cliente até à âncora de fidedignidade configurada.
Use os seguintes comandos para criar os certificados raiz e intermédios. A criação do certificado intermédio é opcional. No entanto, nesta configuração, estamos a usar o certificado intermédio para assinar o certificado de cliente.
Crie um ficheiro de configuração do OpenSSL.
No exemplo seguinte, o ficheiro de configuração (
example.cnf
) contém a secção[ca_exts]
, que especifica extensões X.509 que marcam o certificado como adequado para uma AC. Para saber mais acerca dos requisitos dos certificados de raiz e intermédios, consulte os requisitos de certificados.cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command-line argument. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=clientAuth EOF
Crie um certificado de raiz X.509 autoassinado (
root.cert
). O certificado de raiz é autoassinado com a sua própria chave privada (root.key
).openssl req -x509 \ -new -sha256 -newkey rsa:2048 -nodes \ -days 3650 -subj '/CN=root' \ -config example.cnf \ -extensions ca_exts \ -keyout root.key -out root.cert
Crie o pedido de assinatura de certificado (
int.req
) para o certificado intermédio.openssl req -new \ -sha256 -newkey rsa:2048 -nodes \ -subj '/CN=int' \ -config example.cnf \ -extensions ca_exts \ -keyout int.key -out int.req
Assine o CSR para criar o certificado intermédio X.509 (
int.cert
). O CSR é assinado com o certificado de raiz.openssl x509 -req \ -CAkey root.key -CA root.cert \ -set_serial 1 \ -days 3650 \ -extfile example.cnf \ -extensions ca_exts \ -in int.req -out int.cert
Crie um certificado autoassinado que pode ser adicionado a uma lista de autorizações
Pode criar um certificado autoassinado e adicioná-lo a uma lista de autorizações na configuração de confiança.
Use o seguinte comando OpenSSL para criar um certificado X.509 autoassinado.
openssl req -x509 \
-new -sha256 -newkey rsa:2048 -nodes \
-days 3650 -subj '/CN=localhost' \
-keyout allowlisted.key -out allowlisted.cert
Este certificado é, em seguida, adicionado a um campo allowlistedCertificates
na
configuração de confiança.
Formate os certificados
Para incluir certificados novos ou existentes num TrustStore
, formate os
certificados numa única linha e armazene-os em variáveis de ambiente, para que
possam ser referenciados pelo ficheiro YAML de configuração de confiança.
export ROOT_CERT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
export INTERMEDIATE_CERT=$(cat int.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Para incluir certificados novos ou existentes que são adicionados a uma lista de autorizações numa configuração de confiança, formate os certificados numa única linha e armazene-os em variáveis de ambiente, para que possam ser lidos no ficheiro YAML. Para certificados que estão numa lista de autorizações, use o seguinte comando para formatar os certificados numa única linha e armazená-los na variável de ambiente ALLOWLISTED_CERT
.
export ALLOWLISTED_CERT=$(cat allowlisted.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Crie um recurso de configuração de confiança
Uma configuração de confiança é um recurso que representa a configuração da sua infraestrutura de chave pública (PKI) no Certificate Manager.
Para criar um recurso de configuração de confiança, conclua os seguintes passos:
Consola
Na Google Cloud consola, aceda à página Gestor de certificados.
No separador Configurações de confiança, clique em Adicionar configuração de confiança.
Introduza um nome para a configuração.
Para Localização, selecione Global ou Regional.
A localização indica onde o recurso de configuração de confiança está armazenado. Para balanceadores de carga de aplicações externos globais, balanceadores de carga de aplicações clássicos e balanceadores de carga de aplicações internos entre regiões, crie um recurso de configuração de confiança global. Para balanceadores de carga de aplicações externos regionais e balanceadores de carga de aplicações internos regionais, crie um recurso de configuração de confiança regional.
Se selecionou Regional, selecione a região.
Na secção Armazenamento fidedigno, clique em Adicionar âncora fidedigna e carregue o ficheiro de certificado com codificação PEM ou copie o conteúdo do certificado.
Clique em Adicionar.
Na secção Armazenamento fidedigno, clique em Adicionar AC intermédia e carregue o ficheiro de certificado com codificação PEM ou copie o conteúdo do certificado.
Este passo permite-lhe adicionar outro nível de confiança entre o certificado de raiz e o certificado do servidor.
Clique em Adicionar para adicionar a AC intermediária.
Opcional: na secção Certificados na lista autorizada, clique em Adicionar certificado e carregue o ficheiro de certificado codificado em PEM ou copie o conteúdo do certificado.
Clique em Adicionar para adicionar o certificado na lista de autorizações.
Clique em Criar.
Verifique se o novo recurso de configuração de confiança aparece na lista de configurações.
gcloud
Crie um ficheiro YAML de configuração de confiança (
trust_config.yaml
) que especifique os parâmetros de configuração de confiança. Este recurso de configuração de fidedignidade de exemplo contém um repositório de fidedignidade com uma âncora de fidedignidade e um certificado intermédio. Lê o conteúdo do certificado das variáveis de ambiente criadas no passo Formatar os certificados anterior.cat << EOF > trust_config.yaml trustStores: - trustAnchors: - pemCertificate: "${ROOT_CERT?}" intermediateCas: - pemCertificate: "${INTERMEDIATE_CERT?}" EOF
Para criar um repositório de fidedignidade com âncoras de fidedignidade adicionais ou certificados intermédios, adicione
pemCertificate
linhas na secção adequada.Opcional: especifique o certificado que é adicionado ao ficheiro YAML de configuração de confiança no campo
allowlistedCertificates
. Não precisa de uma loja de confiança para adicionar um certificado a uma lista de autorizações.cat << EOF >> trust_config.yaml allowlistedCertificates: - pemCertificate: "${ALLOWLISTED_CERT?}" EOF
Um certificado adicionado a uma lista de autorizações representa qualquer certificado que possa ser encapsulado na configuração de confiança, para que seja sempre considerado válido. Pode especificar vários certificados numa lista de autorizações usando várias instâncias do campo
pemCertificate
.Para importar o ficheiro YAML de configuração de confiança, use o comando
gcloud certificate-manager trust-configs import
:Global
Para balanceadores de carga de aplicações externos globais, balanceadores de carga de aplicações clássicos e balanceadores de carga de aplicações internos entre regiões, especifique
global
como a localização onde o recurso de configuração de fidedignidade está armazenado.gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml \ --location=global
Substitua o seguinte:
TRUST_CONFIG_NAME
: o nome do recurso de configuração de confiança.
regional
Para balanceadores de carga de aplicações externos regionais e balanceadores de carga de aplicações internos regionais, especifique a região onde o recurso de configuração de confiança está armazenado.
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml \ --location=LOCATION
Substitua o seguinte:
TRUST_CONFIG_NAME
: o nome do recurso de configuração de confiança.LOCATION
: a região onde o recurso de configuração de confiança está armazenado. A localização predefinida églobal
.
Crie um recurso de autenticação de cliente
Um recurso de autenticação do cliente (também denominado ServerTLSPolicy
) permite-lhe especificar o modo TLS do lado do servidor e o recurso de configuração fidedigna a usar quando valida certificados de cliente. Quando o cliente apresenta um certificado inválido ou nenhum certificado ao equilibrador de carga, o
clientValidationMode
especifica como a ligação do cliente é processada. Para mais informações, consulte os
modos de validação do cliente mTLS.
- Quando o
clientValidationMode
está definido comoALLOW_INVALID_OR_MISSING_CLIENT_CERT
, todos os pedidos são transmitidos ao back-end, mesmo que a validação falhe ou o certificado do cliente esteja em falta. - Quando
clientValidationMode
está definido comoREJECT_INVALID
, apenas os pedidos que fornecem um certificado de cliente que pode ser validado em relação a um recursoTrustConfig
são transmitidos ao back-end.
Para criar um recurso de autenticação de cliente (ServerTlsPolicy
),
conclua os seguintes passos:
Consola
Na Google Cloud consola, aceda à página Configuração de autenticação.
No separador Autenticação de cliente, clique em Criar.
Introduza um nome para o recurso de autenticação de cliente.
Para Localização, selecione Global ou Regional.
Para balanceadores de carga de aplicações externos globais, balanceadores de carga de aplicações clássicos e balanceadores de carga de aplicações internos entre regiões, defina a localização como global. Para balanceadores de carga de aplicações externos regionais e balanceadores de carga de aplicações internos regionais, defina a localização para a região onde o balanceador de carga está configurado.
Para o Modo de autenticação de cliente, selecione Equilíbrio de carga.
Selecione um modo de validação do cliente.
Selecione o recurso de configuração de confiança que criou anteriormente.
Clique em Criar.
Verifique se a autenticação de cliente (ServerTlsPolicy
) é apresentada.
gcloud
Com base na forma como quer processar a ligação, selecione uma das seguintes opções para definir o recurso de autenticação de cliente (
ServerTlsPolicy
) no formato YAML.Opção 1: a definição de
clientValidationMode
éALLOW_INVALID_OR_MISSING_CLIENT_CERT
.Global
Para balanceadores de carga de aplicações externos globais, balanceadores de carga de aplicações clássicos e balanceadores de carga de aplicações internos entre regiões, crie um ficheiro YAML que especifique declarativamente o modo de validação do cliente e um recurso de configuração fidedigna 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 balanceadores de carga de aplicações externos regionais e balanceadores de carga de aplicações internos regionais, crie um ficheiro YAML que especifique declarativamente o modo de validação do cliente e um recurso de configuração de fidedignidade 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
Opção 2:
clientValidationMode
está definido comoREJECT_INVALID
.Global
Para balanceadores de carga de aplicações externos globais, balanceadores de carga de aplicações clássicos e balanceadores de carga de aplicações internos entre regiões, crie um ficheiro YAML que especifique declarativamente o modo de validação do cliente e um recurso de configuração fidedigna 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 balanceadores de carga de aplicações externos regionais e balanceadores de carga de aplicações internos regionais, crie um ficheiro YAML que especifique declarativamente o modo de validação do cliente e um recurso de configuração de fidedignidade 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
Substitua o seguinte:
SERVER_TLS_POLICY_NAME
: o nome do recurso de autenticação de cliente (ServerTlsPolicy
).PROJECT_ID
: o ID do seu projeto Google Cloud .LOCATION
: para balanceadores de carga de aplicações externos globais, balanceadores de carga de aplicações clássicos e balanceadores de carga de aplicações internos entre regiões, useglobal
. Para o Application Load Balancer externo regional ou o Application Load Balancer interno regional, use a região onde configurou o balanceador de carga.TRUST_CONFIG_NAME
: o nome do recurso de configuração de confiança que criou anteriormente.
Para importar o recurso de autenticação de cliente
ServerTlsPolicy
, use o comandogcloud network-security server-tls-policies import
:Global
Para balanceadores de carga de aplicações externos globais, balanceadores de carga de aplicações clássicos e balanceadores de carga de aplicações internos entre regiões, defina a flag
--location
comoglobal
.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=global
Substitua o seguinte:
SERVER_TLS_POLICY_NAME
: o nome do recurso de autenticação de cliente (ServerTlsPolicy
).regional
Para balanceadores de carga de aplicações externos regionais e balanceadores de carga de aplicações internos regionais, defina a flag
--location
para a região onde o balanceador de carga está configurado.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=LOCATION
Substitua o seguinte:
SERVER_TLS_POLICY_NAME
: o nome do recurso de autenticação de cliente (ServerTlsPolicy
).Opcional: para apresentar uma lista de todos os recursos de autenticação de cliente (
ServerTlsPolicies
), use o comandogcloud network-security server-tls-policies list
:gcloud network-security server-tls-policies list \ --location=LOCATION
Substitua o seguinte:
LOCATION
: para balanceadores de carga de aplicações externos globais, balanceadores de carga de aplicações clássicos e balanceadores de carga de aplicações internos entre regiões, useglobal
. Para o balanceador de carga de aplicações externo regional ou o balanceador de carga de aplicações interno regional, use a região onde configurou o balanceador de carga.
Anexe o recurso de autenticação de cliente ao balanceador de carga
Para que a autenticação TLS mútua funcione, depois de configurar o balanceador de carga, tem de anexar o recurso de autenticação de cliente (ServerTLSPolicy
) ao recurso de proxy HTTPS de destino do balanceador de carga.
Consola
Na Google Cloud consola, aceda à página Equilíbrio de carga.
Na lista de balanceadores de carga, selecione o balanceador de carga ao qual tem de anexar o recurso de autenticação de clientes (
ServerTLSPolicy
).Clique em
Editar.Na secção Configuração do front-end para um front-end HTTPS, expanda a secção Mostrar funcionalidades avançadas.
Na lista Client Authentication (Autenticação de cliente), selecione o recurso Client Authentication.
Clique em Concluído.
Clique em Atualizar.
gcloud
Para apresentar uma lista de todos os recursos de proxy HTTPS de destino no seu projeto, use o comando :
gcloud compute target-https-proxies list
gcloud compute target-https-proxies list
Tenha em atenção o nome do proxy HTTPS de destino ao qual anexar o recurso
ServerTLSPolicy
. Este nome é denominadoTARGET_HTTPS_PROXY_NAME
nos passos seguintes.Para exportar a configuração de um proxy HTTPS de destino para um ficheiro, use o comando
gcloud compute target-https-proxies export
.Global
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --global
Substitua o seguinte:
TARGET_HTTPS_PROXY_NAME
: o nome do proxy de destino.TARGET_PROXY_FILENAME
: o nome do ficheiro de configuração do proxy de destino no formato YAML. Por exemplo,mtls_target_proxy.yaml
.
regional
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --region=REGION
Substitua o seguinte:
TARGET_HTTPS_PROXY_NAME
: o nome do proxy de destino.TARGET_PROXY_FILENAME
: o nome do ficheiro de configuração do proxy de destino no formato YAML. Por exemplo,mtls_target_proxy.yaml
REGION
: a região onde configurou o balanceador de carga.
Para listar todos os recursos de autenticação de cliente (
ServerTlsPolicy
), use o comandogcloud network-security server-tls-policies list
:gcloud network-security server-tls-policies list \ --location=LOCATION
Substitua o seguinte:
LOCATION
: para o balanceador de carga de aplicações interno entre regiões, o balanceador de carga de aplicações externo global ou o balanceador de carga de aplicações clássico, useglobal
. Para o Application Load Balancer externo regional ou o Application Load Balancer interno regional, use a região onde configurou o balanceador de carga.Tenha em atenção o nome do recurso de autenticação de cliente (
ServerTLSPolicy
) para configurar o mTLS. Este nome é designado comoSERVER_TLS_POLICY_NAME
no passo seguinte.Anexe a autenticação de cliente (
ServerTlsPolicy
) ao proxy HTTPS de destino.echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/LOCATION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> TARGET_PROXY_FILENAME
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto Google Cloud .LOCATION
: para balanceadores de carga de aplicações externos globais ou balanceadores de carga de aplicações clássicos e balanceadores de carga de aplicações internos entre regiões, useglobal
. Para o Application Load Balancer externo regional ou o Application Load Balancer interno regional, use a região onde configurou o balanceador de carga.SERVER_TLS_POLICY_NAME
: o nome do recurso de autenticação de cliente (ServerTLSPolicy
).TARGET_PROXY_FILENAME
: o nome do ficheiro de configuração do proxy de destino no formato YAML.
Para importar a configuração de um proxy HTTPS de destino a partir de um ficheiro, use o comando
gcloud compute target-https-proxies import
.Global
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --global
Substitua o seguinte:
TARGET_HTTPS_PROXY_NAME
: o nome do proxy de destino.TARGET_PROXY_FILENAME
: o nome do ficheiro de configuração do proxy de destino no formato YAML. Por exemplo,mtls_target_proxy.yaml
.
regional
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --region=REGION
Substitua o seguinte:
TARGET_HTTPS_PROXY_NAME
: o nome do proxy de destino.TARGET_PROXY_FILENAME
: o nome do ficheiro de configuração do proxy de destino no formato YAML. Por exemplo,mtls_target_proxy.yaml
REGION
: a região onde configurou o balanceador de carga.
Adicione cabeçalhos personalizados mTLS
Quando ativa o mTLS, pode transmitir informações sobre a ligação mTLS através de cabeçalhos personalizados. Também pode ativar o registo para que as falhas de ligação mTLS sejam capturadas nos registos.
Adicione cabeçalhos personalizados de mTLS aos serviços de back-end
Para equilibradores de carga de aplicações externos globais ou equilibradores de carga de aplicações clássicos, pode usar cabeçalhos personalizados para transmitir informações sobre a ligação mTLS a serviços de back-end.
Para listar todos os serviços de back-end no projeto, use o comando
gcloud compute backend-services list
:gcloud compute backend-services list
Tenha em atenção o nome do serviço de back-end para ativar os cabeçalhos personalizados e o registo. Este nome é referido como
BACKEND_SERVICE
no passo seguinte.Para atualizar o serviço de back-end, use o 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}'
Adicione cabeçalhos personalizados mTLS ao mapa de URLs
Para o balanceador de carga de aplicações interno entre regiões, o balanceador de carga de aplicações externo regional ou o balanceador de carga de aplicações interno regional, pode usar cabeçalhos personalizados para transmitir informações sobre a ligação mTLS para o mapa de URLs.
Para apresentar uma lista de todos os mapas de URLs no projeto, use o comando
gcloud compute url-maps list
:
gcloud compute url-maps list
Tenha em atenção o nome do mapa de URLs para ativar os cabeçalhos personalizados e o registo.
Este nome é denominado URL_MAP_NAME
no
passo seguinte.
Global
Para editar o mapa de URLs de um Application Load Balancer interno entre regiões, use o comando
gcloud compute
url-maps edit
:
gcloud compute url-maps edit URL_MAP_NAME --global
Segue-se um ficheiro YAML de exemplo que mostra como usar variáveis
em cabeçalhos de pedidos personalizados (requestHeadersToAdd
). Pode usar as
mesmas variáveis para enviar cabeçalhos de respostas 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 o mapa de URLs de um balanceador de carga de aplicações externo regional ou de um
balanceador de carga de aplicações interno regional, use o comando
gcloud compute
url-maps edit
:
gcloud compute url-maps edit URL_MAP_NAME --region=REGION
Segue-se um ficheiro YAML de exemplo que mostra como usar variáveis em
cabeçalhos de pedidos personalizados (requestHeadersToAdd
). Pode usar as
mesmas variáveis para enviar cabeçalhos de respostas 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}"
Assine o certificado de cliente com o certificado intermédio
Esta secção oferece uma opção de configuração adicional para gerar um certificado de cliente (folha). Se já criou um recurso TrustConfig que contém um certificado intermédio, faça o seguinte:
Crie um ficheiro de configuração para gerar a CSR para o certificado de cliente.
O seguinte ficheiro de configuração (
client.config
) contém a secção[extension_requirements]
, que especifica as extensões X.509 a incluir no CSR. Para saber mais acerca dos requisitos dos certificados de cliente, consulte a secção Requisitos de 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
Se quiser anexar uma identidade SPIFFE ao ficheiro de configuração, faça o seguinte:
Adicione um campo
subjectAltName
à secção[extension_requirements]
da seguinte forma:subjectAltName = @sans_list
Adicione uma nova secção (
[sans_list]
) na parte inferior do ficheiroclient.config
da seguinte forma:[sans_list] URI.1 = spiffe://example.com/test-identity
Crie a CSR (
client.csr
) para o certificado de cliente.openssl req -new \ -config client.config \ -keyout client.key -out client.csr
Assine o CSR para emitir o certificado de cliente X.509 (
client.cert
). O CSR é assinado pelo certificado intermédio.openssl x509 -req \ -CAkey int.key -CA int.cert \ -days 365 \ -extfile client.config \ -extensions extension_requirements \ -in client.csr -out client.cert
Envie um pedido HTTPS seguro para o endereço IP do equilibrador de carga através do certificado SSL do lado do cliente. O cliente apresenta o respetivo certificado (
client.cert
) para se autenticar no equilibrador de carga.curl -v --key client.key --cert client.cert https://IP_ADDRESS
Substitua IP_ADDRESS pelo endereço IP do balanceador de carga.