Este tutorial mostra como usar o Gestor de certificados para implementar um certificado global gerido pela Google com autorização do equilibrador de carga.
A autorização do equilibrador de carga é o método mais eficiente para obter um certificado gerido pela Google. Mantém a configuração de DNS limpa e aprovisiona o certificado TLS após a conclusão da configuração.
Os seguintes balanceadores de carga suportam certificados geridos pela Google com autorização do balanceador de carga:
- Balanceador de carga de aplicações externo global
- Balanceador de carga de aplicações clássico
- Balanceador de carga de rede de proxy externo global
Objetivos
Este tutorial mostra como concluir as seguintes tarefas:
- Crie um certificado gerido pela Google emitido por uma autoridade de certificação (CA) fidedigna publicamente com autorização do equilibrador de carga através do gestor de certificados.
- Implemente o certificado num balanceador de carga suportado através de um proxy HTTPS de destino.
Se estiver a implementar um certificado num domínio de produção, o tráfego é interrompido brevemente enquanto o certificado é configurado e ativado no equilibrador de carga.
Antes de começar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Certificate Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Configure a CLI gcloud para usar a sua identidade federada.
Para mais informações, consulte o artigo Inicie sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud initFunções necessárias
Certifique-se de que tem as seguintes funções para concluir as tarefas neste tutorial:
Proprietário do Gestor de certificados (
roles/certificatemanager.owner)Necessário para criar e gerir recursos do Gestor de certificados.
Administrador do balanceador de carga de computação (
roles/compute.loadBalancerAdmin) ou administrador de rede de computação (roles/compute.networkAdmin)Obrigatório para criar e gerir o proxy de destino HTTPS.
Administrador de DNS (
roles/dns.admin)Obrigatório se quiser usar o Cloud DNS como solução de DNS.
Para mais informações, consulte o seguinte:
- Funções e autorizações para o Gestor de certificados.
- Funções e autorizações do IAM do Compute Engine para o Compute Engine.
- Funções e autorizações para o Cloud DNS.
Nomes de domínio
Para criar certificados, obtenha os nomes de domínio totalmente qualificados (FQDNs) dos domínios que detém. Se não tiver um domínio, pode usar o Cloud Domains para registar um domínio.
Crie o balanceador de carga
Este tutorial pressupõe que já criou e configurou os back-ends, as verificações de estado, os serviços de back-end e os mapas de URL do balanceador de carga. Se tiver criado um Application Load Balancer externo, tome nota do nome do mapa de URLs, uma vez que vai precisar dele mais tarde neste tutorial.
Se não tiver criado o balanceador de carga, consulte as páginas seguintes para criar um:
Para criar um balanceador de carga de aplicações externo global, consulte o artigo Configure um balanceador de carga de aplicações externo global com back-ends de grupos de instâncias de VMs.
Para criar um Application Load Balancer clássico, consulte o artigo Configure um Application Load Balancer clássico com um grupo de instâncias gerido no back-end.
Para criar um balanceador de carga de rede de proxy externo global (proxy SSL), consulte o artigo Configure um balanceador de carga de rede de proxy externo global (proxy SSL) com back-ends de grupo de instâncias de VMs.
Para criar um Network Load Balancer de proxy clássico (proxy SSL), consulte o artigo Configure um Network Load Balancer de proxy clássico (proxy SSL) com back-ends de grupo de instâncias de VMs.
Crie um certificado gerido pela Google com autorização do balanceador de carga
Para criar um certificado gerido pela Google com autorização do balanceador de carga, faça o seguinte:
Consola
Na Google Cloud consola, aceda à página Gestor de certificados.
No separador Certificados, clique em Adicionar certificado.
No campo Nome do certificado, introduza um nome exclusivo para o certificado.
Opcional: no campo Descrição, introduza uma descrição do certificado. A descrição permite-lhe identificar o certificado.
Para Localização, selecione Global.
Para Âmbito, selecione Predefinição.
Para Tipo de certificado, selecione Criar certificado gerido pela Google.
Para Tipo de autoridade de certificação, selecione Público.
No campo Nomes de domínios, especifique uma lista de nomes de domínios do certificado separados por vírgulas. Cada nome do domínio tem de ser um nome do domínio totalmente qualificado, como
myorg.example.com.Para Tipo de autorização, selecione Autorização do balanceador de carga.
No campo Etiquetas, especifique as etiquetas a associar ao certificado. Para adicionar uma etiqueta, clique em Adicionar etiqueta e especifique uma chave e um valor para a etiqueta.
Clique em Criar.
O novo certificado é apresentado na lista de certificados.
gcloud
Para criar um certificado gerido pela Google global com autorização do equilibrador de carga, use o comando
certificate-manager certificates create:gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAMES"Substitua o seguinte:
CERTIFICATE_NAME: o nome do certificado.DOMAIN_NAMES: uma lista delimitada por vírgulas dos domínios de destino. Cada nome de domínio tem de ser um nome de domínio totalmente qualificado, comomyorg.example.com.
Terraform
Use um
google_certificate_manager_certificaterecurso.Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
API
Crie o certificado fazendo um pedido
POSTao métodocertificates.createda seguinte forma:POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME" { "managed": { "domains": ["DOMAIN_NAME"], } }Substitua o seguinte:
PROJECT_ID: o ID do projeto Google Cloud .CERTIFICATE_NAME: o nome do certificado.DOMAIN_NAMES: uma lista delimitada por vírgulas dos domínios de destino. Cada nome de domínio tem de ser um nome de domínio totalmente qualificado, comomyorg.example.com.
Implemente o certificado num balanceador de carga
Para implementar o certificado global gerido pela Google, use um mapa de certificados.
Crie um mapa de certificados
Crie um mapa de certificados que faça referência à entrada do mapa de certificados associada ao seu certificado:
gcloud
Para criar um mapeamento de certificados, use o comando
gcloud certificate-manager maps create:gcloud certificate-manager maps create CERTIFICATE_MAP_NAME
Substitua
CERTIFICATE_MAP_NAMEpelo nome do mapa de certificados de destino.Terraform
Para criar um mapa de certificados, pode usar um recurso
google_certificate_manager_certificate_map.Crie uma entrada de mapa de certificado
Crie uma entrada de mapa de certificados e associe-a ao seu certificado e mapa de certificados:
gcloud
Para criar uma entrada de mapeamento de certificados, use o comando
gcloud certificate-manager maps entries create:gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME" \ --certificates="CERTIFICATE_NAME" \ --hostname="HOSTNAME"Substitua o seguinte:
CERTIFICATE_MAP_ENTRY_NAME: o nome da entrada do mapa de certificados.CERTIFICATE_MAP_NAME: o nome do mapeamento de certificados ao qual a entrada de mapeamento de certificados está anexada.CERTIFICATE_NAME: o nome do certificado que quer associar à entrada do mapa de certificados.HOSTNAME: o nome do anfitrião que quer associar à entrada do mapa de certificados.Se quiser criar um certificado que abranja um domínio com caráter universal e um domínio raiz, especifique o nome do anfitrião com uma raiz e um caráter universal, como
example.come*.example.com. Além disso, tem de especificar duas entradas de mapeamento de certificados: uma paraexample.come outra para*.example.com.
Terraform
Para criar uma entrada de mapeamento de certificados com um domínio raiz, use um recurso
google_certificate_manager_certificate_map_entry.Para criar uma entrada de mapeamento de certificados com um domínio de caráter universal, use um recurso
google_certificate_manager_certificate_map_entry.Verifique se a entrada do mapeamento de certificados está ativa
Verifique se a entrada do mapeamento de certificados está ativa antes de anexar o respetivo mapeamento de certificados ao proxy de destino.
Para validar a entrada do mapeamento de certificados, use o comando
gcloud certificate-manager maps entries describe:gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"Substitua o seguinte:
CERTIFICATE_MAP_ENTRY_NAME: o nome da entrada do mapa de certificados.CERTIFICATE_NAME: o nome do certificado que quer associar à entrada do mapa de certificados.
O resultado é semelhante ao seguinte:
certificates: createTime: '2021-09-06T10:01:56.229472109Z' hostname: example.com name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry state: ACTIVE updateTime: '2021-09-06T10:01:58.277031787Z'
Associe o mapa de certificados ao proxy de destino
Pode anexar o mapa de certificados a um novo proxy de destino ou a um proxy de destino existente.
gcloud
Para anexar o mapeamento de certificados a um novo proxy de destino, use o comando
gcloud compute target-https-proxies create:gcloud compute target-https-proxies create PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME" \ --url-map="URL_MAP" \ --globalSubstitua o seguinte:
PROXY_NAME: o nome do proxy de destino.CERTIFICATE_MAP_NAME: o nome do mapeamento de certificados que faz referência à entrada do mapeamento de certificados e ao certificado associado.URL_MAP: o nome do mapa de URLs
Para anexar o mapa de certificados a um proxy HTTPS de destino existente, use o comando
gcloud compute target-https-proxies update. Se não souber o nome do proxy de destino existente, aceda à página Proxies de destino e anote o nome do proxy de destino.gcloud compute target-https-proxies update PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME" \ --globalDepois de criar ou atualizar o proxy de destino, execute o seguinte comando para o validar:
gcloud compute target-https-proxies list
Terraform
Para anexar o mapa de certificados ao proxy de destino, pode usar um recurso
google_compute_target_https_proxy.Quando configura um proxy de destino, se anexar certificados TLS (SSL) diretamente e também através de um mapa de certificados, o proxy usa os certificados referenciados pelo mapa de certificados e ignora os certificados TLS (SSL) anexados diretamente.
Valide o estado do certificado
Antes de implementar um certificado num equilibrador de carga, verifique se está ativo. O estado do certificado pode demorar vários minutos a mudar para
ACTIVE.Consola
Na Google Cloud consola, aceda à página Gestor de certificados.
No separador Certificados, verifique a coluna Estado do certificado.
gcloud
Para verificar o estado do certificado, execute o seguinte comando:
gcloud certificate-manager certificates describe CERTIFICATE_NAME
Substitua
CERTIFICATE_NAMEpelo nome do certificado gerido pela Google de destino.O resultado é semelhante ao seguinte:
createTime: '2021-10-20T12:19:53.370778666Z' expireTime: '2022-05-07T05:03:49Z' managed: authorizationAttemptInfo: - domain: myorg.example.com state: AUTHORIZED domains: - myorg.example.com state: ACTIVE name: projects/myProject/locations/global/certificates/myCert pemCertificate: | -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- sanDnsnames: - myorg.example.com updateTime: '2021-10-20T12:19:55.083385630Z'Se o estado do certificado não for
ACTIVEapós várias horas, verifique o seguinte:- O mapeamento de certificados que faz referência ao certificado está anexado ao proxy de destino correto.
- O proxy de destino está associado ao equilibrador de carga correto.
- A configuração de DNS do domínio de destino aponta para o endereço IP do balanceador de carga de destino.
Para ver mais passos de resolução de problemas, consulte o artigo Resolva problemas do Gestor de certificados.
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud relativos aos recursos usados neste tutorial, elimine-os.
Elimine o balanceador de carga e os respetivos recursos.
Para mais informações, consulte o artigo Limpe uma configuração de equilíbrio de carga.
Elimine ou desassocie o mapa de certificados do proxy.
Para eliminar o mapeamento de certificados, execute o seguinte comando:
gcloud compute target-https-proxies delete PROXY_NAME
Se quiser manter o proxy HTTPS de destino, desassocie o mapa de certificados do proxy.
- Se existirem certificados TLS (SSL) anexados diretamente ao proxy, a desanexação do mapa de certificados faz com que o proxy retome a utilização desses certificados TLS (SSL) anexados diretamente.
- Se não existirem certificados TLS (SSL) anexados diretamente ao proxy, não é possível separar o mapa de certificados do proxy. Primeiro, tem de anexar, pelo menos, um certificado TLS (SSL) diretamente ao proxy antes de poder desanexar o mapa de certificados.
Para desassociar o mapeamento de certificados, execute o seguinte comando:
gcloud compute target-https-proxies update PROXY_NAME \ --clear-certificate-mapSubstitua
PROXY_NAMEpelo nome do proxy de destino.Elimine a entrada do mapa de certificados do mapa de certificados:
gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"Substitua o seguinte:
CERTIFICATE_MAP_ENTRY_NAME: o nome da entrada do mapa de certificados.CERTIFICATE_MAP_NAME: o nome do mapeamento de certificados.
Elimine o mapeamento de certificados:
gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
Substitua
CERTIFICATE_MAP_NAMEpelo nome do mapa de certificados.Elimine o certificado gerido pela Google:
Consola
Na Google Cloud consola, aceda à página Gestor de certificados.
No separador Certificados, selecione a caixa de verificação do certificado.
Clique em Eliminar.
Na caixa de diálogo apresentada, clique em Eliminar para confirmar.
gcloud
gcloud certificate-manager certificates delete CERTIFICATE_NAME
Substitua
CERTIFICATE_NAMEpelo nome do certificado de destino.
O que se segue?