Neste tutorial, explicamos o processo de implantação do certificado usando um certificado gerenciado pelo Google com a autorização de DNS como exemplo.
Os seguintes balanceadores de carga dão suporte a certificados gerenciados pelo Google com autorização de DNS:
- Balanceador de carga de aplicativo externo global
- Balanceador de carga de aplicativo clássico
- Balanceador de carga de aplicativo interno entre regiões
- Balanceador de carga de rede de proxy externo global
Para uma comparação dos tipos compatíveis de autorização de domínio, consulte Autorizações de domínio.
Se você quiser migrar um certificado atual para o Gerenciador de certificados, siga as etapas em Migrar certificados para o gerenciador de certificados.
Objetivos
Nesta seção, mostramos como concluir as seguintes tarefas:
- Crie um certificado gerenciado pelo Google emitido por uma autoridade de certificação confiável publicamente com autorização DNS usando o Gerenciador de certificados.
- Implante o certificado em um balanceador de carga compatível usando um proxy HTTPS de destino.
Para mais informações sobre o processo de implantação de certificados, consulte a Visão geral da implantação.
Antes de começar
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
A versão
465.0.0
ou mais recente da CLI gcloud é necessária para implantar o certificado. Para verificar a versão da CLI gcloud, execute o seguinte comando:gcloud --version
Para atualizar a CLI gcloud, execute o comando a seguir.
gcloud components update
Verifique se você tem os papéis a seguir para concluir as tarefas deste tutorial:
- Proprietário do gerenciador de certificados: necessário para criar e gerenciar recursos do gerenciador de certificados.
- Administrador do balanceador de carga do Compute ou Administrador de rede do Compute:necessário para criar e gerenciar o proxy de destino HTTPS.
- Administrador de DNS: obrigatório se você quiser usar o Cloud DNS como sua solução de DNS.
Para ver mais informações, consulte os seguintes tópicos:
- Papéis e permissões do gerenciador de certificados
- Permissões e papéis do IAM do Compute Engine para o Compute Engine
- Controle de acesso com IAM para o Cloud DNS
Criar um certificado gerenciado pelo Google com autorização de DNS
Conclua as etapas nesta seção para criar uma autorização de DNS e um certificado gerenciado pelo Google que faça referência a essa autorização.
Criar uma autorização de DNS
Crie a autorização de DNS conforme descrito nesta seção. Se você estiver criando uma autorização de DNS para um certificado de caractere curinga, como *.myorg.example.com
, configure a autorização de DNS para o domínio pai, por exemplo, myorg.example.com
.
gcloud
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
Para usar a autorização de DNS por projeto (Prévia), execute o seguinte comando:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" \ --type="PER_PROJECT_RECORD" gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
Substitua:
AUTHORIZATION_NAME
: o nome da autorização de DNS.DOMAIN_NAME
: o nome do domínio para o qual você está criando essa autorização de DNS. O nome de domínio precisa ser totalmente qualificado, comomyorg.example.com
.
O comando vai retornar uma saída semelhante à seguinte. Use o registro CNAME da saída para adicionar à configuração de DNS.
createTime: '2022-01-14T13:35:00.258409106Z' dnsResourceRecord: data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. name: _acme-challenge.myorg.example.com. type: CNAME domain: myorg.example.com name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization updateTime: '2022-01-14T13:35:01.571086137Z'
Terraform
Para criar uma autorização de DNS, use um
recurso google_certificate_manager_dns_authorization
.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicionar o registro CNAME à configuração de DNS
Se você estiver usando o Google Cloud para gerenciar seu DNS, conclua as etapas desta seção. Caso contrário, consulte a documentação da sua solução de DNS de terceiros.
Antes de concluir as etapas nesta seção, verifique se você criou uma zona DNS pública.
Quando você cria uma autorização de DNS, o comando da CLI gcloud retorna o registro CNAME correspondente. Você precisa adicionar esse registro CNAME à sua configuração DNS na zona DNS do domínio de destino da seguinte maneira:
gcloud
- Inicie a transação do registro DNS:
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
Substitua DNS_ZONE_NAME
pelo nome da zona DNS de
destino.
- Adicione o registro CNAME à zona DNS de destino:
gcloud dns record-sets transaction add CNAME_RECORD \ --name="_acme-challenge.DOMAIN_NAME." \ --ttl="30" \ --type="CNAME" \ --zone="DNS_ZONE_NAME"
Substitua:
CNAME_RECORD
: o valor de dados completo do registro CNAME retornado pelo comando da Google Cloud CLI que criou a autorização de DNS correspondente.DOMAIN_NAME
: o nome do domínio de destino. O nome de domínio precisa ser um nome de domínio totalmente qualificado, comomyorg.example.com
. Inclua também o ponto final após o nome do domínio de destino.DNS_ZONE_NAME
: o nome da zona de DNS de destino.
Veja o exemplo a seguir:
gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \ --name="_acme-challenge.myorg.example.com." \ --ttl="30" \ --type="CNAME" \ --zone="myorg-example-com"
- Execute a transação do registro DNS para salvar suas alterações:
gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
Substitua DNS_ZONE_NAME
pelo nome da zona DNS de
destino.
Terraform
Para adicionar o registro CNAME à configuração de DNS, use um
recurso google_dns_record_set
.
Criar um certificado gerenciado pelo Google que faça referência à autorização DNS
Para criar um certificado gerenciado pelo Google que faça referência à autorização de DNS criada nas etapas anteriores, faça o seguinte:
gcloud
Para um balanceador de carga de aplicativo externo global, um balanceador de carga de aplicativo clássico ou um balanceador de carga de rede de proxy externo global:
Execute este comando:
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains=DOMAIN_NAME \ --dns-authorizations=AUTHORIZATION_NAME
Substitua:
CERTIFICATE_NAME
: um nome exclusivo do certificado.DOMAIN_NAME
: o domínio de destino do certificado. O nome de domínio precisa ser um nome de domínio totalmente qualificado, comomyorg.example.com
.AUTHORIZATION_NAME
: o nome da autorização de DNS que você criou para o certificado.
Para criar um certificado gerenciado pelo Google com um nome de domínio curinga, use o comando a seguir. Um certificado de nome de domínio curinga abrange todos os subdomínios de primeiro nível de um determinado domínio.
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="*.DOMAIN_NAME,DOMAIN_NAME" \ --dns-authorizations=AUTHORIZATION_NAME
Substitua:
CERTIFICATE_NAME
: um nome exclusivo do certificado.DOMAIN_NAME
: o domínio de destino do certificado. O prefixo de ponto asterisco (*.
) significa um certificado de caractere curinga. O nome de domínio precisa ser totalmente qualificado, comomyorg.example.com
.AUTHORIZATION_NAME
: o nome da autorização de DNS que você criou para o certificado.
Para um balanceador de carga de aplicativo interno entre regiões:
Execute este comando:
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains=DOMAIN_NAME \ --dns-authorizations=AUTHORIZATION_NAME \ --scope=all-regions
Substitua:
CERTIFICATE_NAME
: um nome exclusivo do certificado.DOMAIN_NAME
: o domínio de destino do certificado. O nome de domínio precisa ser um nome de domínio totalmente qualificado, comomyorg.example.com
.AUTHORIZATION_NAME
: o nome da autorização de DNS que você criou para o certificado.
Para criar um certificado gerenciado pelo Google com um nome de domínio curinga, use o comando a seguir. Um certificado de nome de domínio curinga abrange todos os subdomínios de primeiro nível de um determinado domínio.
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="*.DOMAIN_NAME,DOMAIN_NAME" \ --dns-authorizations=AUTHORIZATION_NAME \ --scope=all-regions
Substitua:
CERTIFICATE_NAME
: um nome exclusivo do certificado.DOMAIN_NAME
: o domínio de destino do certificado. O prefixo de ponto asterisco (*.
) significa um certificado de caractere curinga. O nome de domínio precisa ser um nome de domínio totalmente qualificado, comomyorg.example.com
.AUTHORIZATION_NAME
: o nome da autorização de DNS que você criou para o certificado.
Terraform
Verificar se o certificado está ativo
Use o comando a seguir para verificar se o próprio certificado está ativo antes de implantá-lo no balanceador de carga. Pode levar até várias horas para o estado do certificado mudar para ACTIVE
.
gcloud certificate-manager certificates describe CERTIFICATE_NAME
Substitua CERTIFICATE_NAME
pelo nome do certificado de destino gerenciado pelo Google.
O comando retorna uma saída semelhante a esta:
certificatePem: myPEM createTime: '2021-10-20T12:19:53.370778666Z' expireTime: '2022-05-07T05:03:49Z' managed: authorizationAttemptInfo: - domain: myorg.example.com state: AUTHORIZED dnsAuthorizations: - projects/my-project/locations/global/dnsAuthorizations/myAuth domains: - myorg.example.com state: ACTIVE name: projects/myProject/locations/global/certificates/myCert scope: myScope sanDnsnames: - myorg.example.com updateTime: '2021-10-20T12:19:55.083385630Z'
Implantar o certificado em um balanceador de carga
Nesta seção, apresentamos as etapas necessárias para implantar o certificado gerenciado pelo Google em um balanceador de carga.
Antes de prosseguir com as tarefas nesta seção, verifique se você concluiu as tarefas listadas na seção Criar um certificado gerenciado pelo Google com autorização de DNS.
Dependendo do tipo do balanceador de carga, é possível implantar certificados da seguinte maneira:
- Para os balanceadores de carga a seguir, implante o certificado usando um mapa de certificado:
- Balanceador de carga de aplicativo externo global
- Balanceador de carga de rede de proxy externo global
- Balanceador de carga de aplicativo clássico
- Para o balanceador de carga de aplicativo interno entre regiões, implante o certificado anexando-o diretamente ao proxy de destino.
Implantar o certificado usando um mapa de certificado
Nesta seção, descrevemos as etapas para implantar um certificado usando um mapa de certificado.
Criar um CertificateMap
Crie um mapa de certificado que faça referência à entrada do mapa de certificado associada ao seu certificado:
gcloud
gcloud certificate-manager maps create CERTIFICATE_MAP_NAME
Substitua CERTIFICATE_MAP_NAME
pelo nome do mapa de certificado
de destino.
Terraform
Para criar um mapa de certificado, use um recurso google_certificate_manager_certificate_map
.
Criar uma entrada de mapa de certificado
Crie uma entrada de mapa de certificado e a associe ao seu certificado e ao seu mapa de certificados:
gcloud
gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME" \ --certificates="CERTIFICATE_NAME" \ --hostname="HOSTNAME"
Substitua:
CERTIFICATE_MAP_ENTRY_NAME
: um nome exclusivo da entrada do mapa de certificadoCERTIFICATE_MAP_NAME
: o nome do mapa do certificado ao qual esta entrada de mapa do certificado se anexa.CERTIFICATE_NAME
: o nome do certificado que você quer associar a esta entrada de mapa de certificado.HOSTNAME
: o nome do host que você quer associar a essa entrada de mapa de certificado.
Terraform
Para criar uma entrada do mapa de certificado, use um
recurso google_certificate_manager_certificate_map_entry
.
Verificar se a entrada do mapa de certificado está ativa
Use o comando a seguir para verificar se a entrada do mapa de certificados está ativa antes de anexar o mapa de certificado correspondente ao proxy de destino:
gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
Substitua:
CERTIFICATE_MAP_ENTRY_NAME
: o nome da entrada do mapa do certificado de destinoCERTIFICATE_MAP_NAME
: o nome do mapa do certificado ao qual esta entrada de mapa do certificado se anexa.
O comando retorna uma saída semelhante a esta:
createTime: '2021-09-06T10:01:56.229472109Z' name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry state: ACTIVE updateTime: '2021-09-06T10:01:58.277031787Z'
Anexar o mapa de certificado ao proxy de destino
Anexe o mapa de certificados configurado ao proxy de destino:
gcloud
No Console do Google Cloud, acesse a página Proxies de destino.
Anote o nome do proxy de destino.
Anexe o mapa de certificado ao proxy de destino:
gcloud compute target-https-proxies update PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME" \ --global
Substitua:
PROXY_NAME
: o nome do proxy de destino.CERTIFICATE_MAP_NAME
: o nome do mapa de certificado que faz referência à sua entrada de mapa de certificado e ao certificado associado.
Terraform
Para anexar o mapa de certificado ao proxy de destino, use um
recurso google_compute_target_https_proxy
.
Se houver certificados TLS (SSL) anexados diretamente ao proxy, o proxy vai dar preferência aos certificados referenciados pelo mapa de certificados em relação aos certificados TLS (SSL) anexados diretamente.
Anexar o certificado diretamente ao proxy de destino
Para anexar o certificado diretamente ao proxy, execute o seguinte comando:
gcloud compute target-https-proxies update PROXY_NAME \ --url-map=URL_MAP \ --global \ --certificate-manager-certificates=CERTIFICATE_NAME
Substitua:
PROXY_NAME
: um nome exclusivo do proxy.URL_MAP
: o nome do mapa de URL. Você criou o mapa de URL quando criou o balanceador de carga.CERTIFICATE_NAME
: o nome do certificado.
Limpar
Para reverter as alterações feitas neste tutorial, siga estas etapas:
Desanexe o mapa de certificado do proxy.
Antes de remover o mapa de certificados, observe o seguinte:
- Se houver algum certificado TLS (SSL) anexado diretamente ao proxy, a remoção do mapa de certificados fará com que o proxy retome o uso dos certificados TLS (SSL) anexados diretamente.
- Se não houver certificados TLS (SSL) anexados diretamente ao proxy, o mapa de certificado não poderá ser removido do proxy. Primeiro, é necessário anexar pelo menos um certificado TLS (SSL) diretamente ao proxy antes de separar o mapa de certificado.
Para desanexar o mapa de certificado, execute o seguinte comando:
gcloud compute target-https-proxies update PROXY_NAME \ --clear-certificate-map
Substitua
PROXY_NAME
pelo nome do proxy de destino.Exclua a entrada do mapa de certificado:
gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
Substitua:
CERTIFICATE_MAP_ENTRY_NAME
: o nome da entrada do mapa do certificado de destino.CERTIFICATE_MAP_NAME
: o nome do mapa de certificado de destino.
Exclua o mapa de certificado:
gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
Substitua
CERTIFICATE_MAP_NAME
pelo nome do mapa de certificado de destino.Exclua o certificado gerenciado pelo Google:
gcloud certificate-manager certificates delete CERTIFICATE_NAME
Substitua
CERTIFICATE_NAME
pelo nome do certificado de destino.Exclua a autorização de DNS:
gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME
Substitua
AUTHORIZATION_NAME
pelo nome da autorização de DNS de destino.