Este tutorial mostra como usar o Gestor de certificados para implementar um certificado global gerido pela Google com autorização de DNS num Application Load Balancer interno entre regiões.
Se quiser implementar balanceadores de carga externos globais ou balanceadores de carga regionais, consulte o seguinte:
Crie um certificado gerido pela Google com autorização de DNS
Antes de criar o certificado, crie uma zona de DNS pública. Em seguida, crie uma autorização de DNS e adicione o registo CNAME à zona de DNS de destino.
Crie uma autorização de DNS
Uma autorização de DNS abrange apenas um único nome de domínio. Tem de criar uma autorização de DNS separada para cada nome de domínio que quer usar com o certificado de destino.
Se estiver a criar uma autorização de DNS para um certificado de caráter universal, como *.myorg.example.com
, configure a autorização de DNS para o domínio principal, por exemplo, myorg.example.com
.
Consola
Pode criar uma autorização de DNS ou anexar uma autorização de DNS existente quando cria um certificado. Para mais informações, consulte o artigo Crie um certificado gerido pela Google que faça referência à autorização de DNS.
gcloud
Pode criar dois tipos de autorizações de DNS: FIXED_RECORD
ou PER_PROJECT_RECORD
. Para mais
informações, consulte o artigo Autorização de DNS.
Autorização de DNS FIXED_RECORD
Para criar uma FIXED_RECORD
autorização de DNS, use o seguinte gcloud certificate-manager dns-authorizations create
comando:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" \ --type=[FIXED_RECORD]
Substitua o seguinte:
AUTHORIZATION_NAME
: o nome da autorização de DNS.DOMAIN_NAME
: o nome do domínio de destino para o qual está a criar esta autorização de DNS. O nome do domínio tem de ser um nome do domínio totalmente qualificado, comomyorg.example.com
.
Depois de criar a autorização de DNS FIXED_RECORD
, valide-a com o comando gcloud certificate-manager dns-authorizations describe
:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
O resultado é semelhante ao seguinte. No resultado, encontre a secção dnsResourceRecord
. Localize o registo CNAME
e adicione os detalhes do registo (data
, name
e type
) à sua 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'
Autorização de DNS PER_PROJECT_RECORD
Para criar uma PER_PROJECT_RECORD
autorização de DNS, use o seguinte
gcloud certificate-manager dns-authorizations create
comando:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" \ --type=PER_PROJECT_RECORD
Substitua o seguinte:
AUTHORIZATION_NAME
: o nome da autorização de DNS.DOMAIN_NAME
: o nome do domínio de destino para o qual está a criar esta autorização de DNS. O nome do domínio tem de ser um nome do domínio totalmente qualificado, comomyorg.example.com
.
Depois de criar a autorização de DNS PER_PROJECT_RECORD
, valide-a com o comando gcloud certificate-manager dns-authorizations describe
:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
O resultado é semelhante ao seguinte. No resultado, encontre a secção dnsResourceRecord
. Localize o registo CNAME
e adicione os detalhes do registo (data
, name
e type
) à sua 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_ujmmovf2vn55tgye.myorg.example.com type: CNAME domain: myorg.example.com name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization updateTime: '2022-01-14T13:35:01.571086137Z'
API
Para criar uma autorização de DNS, faça um pedido POST
ao método dnsAuthorizations.create
:
POST /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME" { "domain": "DOMAIN_NAME", "type": "PER_PROJECT_RECORD" //optional }
Substitua o seguinte:
PROJECT_ID
: o ID do Google Cloud projeto.AUTHORIZATION_NAME
: o nome da autorização de DNS.DOMAIN_NAME
: o nome do domínio de destino para o qual está a criar esta autorização de DNS. O nome do domínio tem de ser um nome do domínio totalmente qualificado, comomyorg.example.com
.
Crie um certificado gerido pela Google que faça referência à autorização de DNS
Para criar um certificado gerido pela Google que faça referência à autorização de DNS que criou nos passos anteriores, 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 para o certificado. A descrição permite-lhe identificar o certificado.
Para Localização, selecione Global.
Para Âmbito, selecione Todas as regiões.
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
. O nome do domínio também pode ser um nome de domínio com carateres universais, como*.example.com
.Para Tipo de autorização, selecione Autorização de DNS.
A página apresenta as autorizações de DNS dos nomes de domínios. Se um nome de domínio não tiver uma autorização de DNS associada, siga estes passos para criar uma:
- Clique em Criar autorização de DNS em falta.
- No campo Nome da autorização de DNS, especifique o nome da autorização de DNS.
O tipo de autorização de DNS predefinido é
FIXED_RECORD
. Para gerir certificados de forma independente em vários projetos, selecione a caixa de verificação Autorização por projeto. - Clique em Criar autorização de DNS.
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 entre regiões com autorização de DNS,
use o comando certificate-manager certificates create
com as flags dns-authorizations
e --scope
:
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAME, *.DOMAIN_NAME" \ --dns-authorizations="AUTHORIZATION_NAMES" \ --scope=all-regions
Substitua o seguinte:
CERTIFICATE_NAME
: o nome do certificado.DOMAIN_NAME
: o nome do domínio de destino. O nome do domínio tem de ser um nome do domínio totalmente qualificado, comomyorg.example.com
, ou um domínio de caráter universal, como*.myorg.example.com
. O prefixo de ponto de asterisco (*.) significa um certificado de caráter universal.AUTHORIZATION_NAMES
: uma lista de nomes das autorizações de DNS delimitada por vírgulas.
API
Crie o certificado fazendo um pedido POST
ao método certificates.create
da seguinte forma:
POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME { "managed": { "domains": ["DOMAIN_NAME"], "dnsAuthorizations": [ "projects/PROJECT_ID/locations/global/dnsAuthorizations/AUTHORIZATION_NAME", ], "scope": "ALL_REGIONS" } }
Substitua o seguinte:
PROJECT_ID
: o ID do Google Cloud projeto.CERTIFICATE_NAME
: o nome do certificado.DOMAIN_NAME
: o nome do domínio de destino. O nome do domínio tem de ser um nome do domínio totalmente qualificado, comomyorg.example.com
, ou um domínio de caráter universal, como*.myorg.example.com
. O prefixo de ponto de asterisco (*.) significa um certificado de caráter universal.AUTHORIZATION_NAMES
: uma lista de nomes das autorizações de DNS delimitada por vírgulas.
Adicione o registo CNAME à configuração do DNS
Se estiver a usar uma solução DNS de terceiros para gerir o seu DNS, consulte a respetiva documentação para adicionar o registo CNAME à configuração do DNS. Se estiver a usar o Google Cloud para gerir o seu DNS, conclua os passos nesta secção.
Consola
Para criar um conjunto de registos, siga estes passos:
Na Google Cloud consola, aceda à página Zonas de DNS.
Clique no nome da zona DNS onde quer adicionar o registo.
Na página Detalhes da zona, clique em Adicionar padrão.
Na página Create record set, no campo DNS name, introduza o subdomínio da zona DNS.
Veja os exemplos seguintes:
Se o valor do campo
dnsResourceRecord.name
for_acme-challenge.myorg.example.com.
e o texto esbatido no campo Nome de DNS for.example.com.
, introduza_acme-challenge.myorg
.Se o valor do campo
dnsResourceRecord.name
for_acme-challenge.myorg.example.com.
e o texto esbatido no campo Nome de DNS for.myorg.example.com.
, introduza_acme-challenge
.Se o valor do campo
dnsResourceRecord.name
for_acme-challenge_ujmmovf2vn55tgye.myorg.example.com.
e o texto esbatido no campo Nome DNS for.myorg.example.com.
, introduza_acme-challenge_ujmmovf2vn55tgye
.
No campo Tipo de registo de recursos, selecione CNAME.
No campo TTL, introduza um valor numérico positivo para o tempo de vida do registo de recursos, que é o período durante o qual pode ser armazenado em cache.
Na lista Unidade de TTL, selecione a unidade de tempo, por exemplo,
30 minutes
.No campo Nome canónico, introduza o valor completo do campo
dnsResourceRecord.data
, conforme apresentado no resultado do comandogcloud certificate-manager dns-authorizations describe
.Para introduzir informações adicionais, clique em Adicionar item.
Clique em Criar.
gcloud
Quando cria uma autorização de DNS, o comando da CLI gcloud devolve o registo CNAME correspondente. Para adicionar o registo CNAME à configuração do DNS na zona de DNS do domínio de destino, siga estes passos:
Inicie a transação do registo DNS:
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
Substitua
DNS_ZONE_NAME
pelo nome da zona DNS de destino.Adicione o registo CNAME à zona DNS de destino:
gcloud dns record-sets transaction add CNAME_RECORD \ --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \ --ttl="30" \ --type="CNAME" \ --zone="DNS_ZONE_NAME"
Substitua o seguinte:
CNAME_RECORD
: o valor de dados completo do registo CNAME devolvido pelo comando da CLI Google Cloud que criou a autorização DNS correspondente.VALIDATION_SUBDOMAIN_NAME
: o subdomínio do prefixo da zona DNS, como_acme-challenge
. Pode copiar o nome do registo TXT do registo de comandos, conforme descrito em Crie uma autorização de DNS.gcloud certificate-manager dns-authorizations describe
DOMAIN_NAME
: o nome do domínio de destino.O nome do domínio tem de ser um nome do domínio totalmente qualificado, comomyorg.example.com
. Também tem de incluir o ponto final após o nome do domínio de destino.DNS_ZONE_NAME
: o nome da zona DNS de destino.
Para mais informações acerca da diferença entre as autorizações de DNS
FIXED_RECORD
ePER_PROJECT_RECORD
, consulte os seguintes exemplos. A única diferença entre os dois exemplos é o valor da flag--name
.Autorização de DNS FIXED_RECORD
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"
Autorização de DNS PER_PROJECT_RECORD
gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \ --name="_acme-challenge_ujmmovf2vn55tgye.myorg.example.com." \ --ttl="30" \ --type="CNAME" \ --zone="myorg-example-com"
Execute a transação de registo de DNS para guardar as 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 registo CNAME à configuração do DNS, pode usar um
google_dns_record_set
recurso.
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_NAME
pelo 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 dnsAuthorizations: - projects/myProject/locations/global/dnsAuthorizations/myCert 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 ACTIVE
após várias horas, verifique se adicionou corretamente o registo CNAME
à configuração de DNS.
Para ver mais passos de resolução de problemas, consulte o artigo Resolva problemas do Gestor de certificados.
Implemente o certificado num balanceador de carga
Para implementar o certificado global gerido pela Google, anexe-o diretamente ao proxy de destino.
Anexe o certificado diretamente ao proxy de destino
Pode anexar o certificado a um novo proxy de destino ou a um proxy de destino existente.
Para anexar o certificado a um novo proxy de destino, use o comando gcloud compute
target-https-proxies create
:
gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP \ --certificate-manager-certificates=CERTIFICATE_NAME \ --global
Substitua o seguinte:
PROXY_NAME
: o nome do proxy de destino.URL_MAP
: o nome do mapa de URLs. Criou o mapa de URLs quando criou o balanceador de carga.CERTIFICATE_NAME
: o nome do certificado.
Para anexar o certificado 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 \ --global \ --certificate-manager-certificates=CERTIFICATE_NAME
Depois de criar ou atualizar o proxy de destino, execute o seguinte comando para o verificar:
gcloud compute target-https-proxies list
Limpar
Para evitar incorrer em cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine-os.
Elimine o balanceador de carga e os respetivos recursos.
Consulte o artigo Limpe uma configuração de equilíbrio de carga.
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_NAME
pelo nome do certificado de destino.Elimine 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.