Configure certificados SSL (TLS)

Depois de criar um serviço de CDN de multimédia (ou serviços), pode emitir e anexar certificados SSL (TLS) para suportar a conetividade segura em navegadores e aplicações para dispositivos móveis.

Emita um certificado gerido

Para criar um certificado gerido e anexá-lo ao seu serviço de RFC, tem de fazer o seguinte:

  1. Demonstre a propriedade ("autorização") dos domínios para os quais quer emitir certificados criando um token de desafio e adicionando um registo DNS.
  2. Crie um certificado do tipo EDGE_CACHE com um ou mais nomes de domínios com base nessa autorização.
  3. Anexe esse certificado a um ou mais serviços de cache na extremidade.

Tem de ter as seguintes autorizações de gestão de acessos e identidade para autorizar, criar e anexar certificados a um serviço de cache na extremidade:

  • certificatemanager.certs.create
  • certificatemanager.certs.get
  • certificatemanager.certs.list
  • certificatemanager.certs.use
  • certificatemanager.dnsauthorizations.create
  • certificatemanager.dnsauthorizations.get
  • certificatemanager.dnsauthorizations.list
  • certificatemanager.dnsauthorizations.use

Os utilizadores que precisam de anexar um certificado existente a um serviço Media CDN precisam das autorizações de IAM certificatemanager.certs.get, certificatemanager.certs.list e certificatemanager.certs.use.

Antes de começar

Crie uma autorização de DNS

Primeiro, tem de criar uma autorização de DNS para demonstrar a propriedade do domínio antes de poder emitir certificados para o mesmo. A autorização de DNS usa o desafio DNS-01 ACME e permite-lhe emitir um certificado antes de direcionar o tráfego orientado para o utilizador para o seu serviço de cache na extremidade.

Defina o valor de domain para o nome do domínio para o qual pretende criar um certificado, da seguinte forma:

gcloud

Use o comando gcloud certificate-manager dns-authorizations:

gcloud certificate-manager dns-authorizations create DOMAIN_NAME_AUTH \
    --domain="DOMAIN_NAME"
gcloud certificate-manager dns-authorizations describe DOMAIN_NAME_AUTH

A CLI gcloud devolve uma resposta com os detalhes do registo DNS que tem de adicionar.

createTime: '2022-01-14T13:35:00.258409106Z'
dnsResourceRecord:
  data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog.
  name: _acme-challenge.example.com.
  type: CNAME
domain: example.com
name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization
updateTime: '2022-01-14T13:35:01.571086137Z'

Terraform

resource "google_certificate_manager_dns_authorization" "default" {
  name        = "example-dns-auth"
  description = "example dns authorization "
  domain      = "test.example.com"
}

Se estiver a usar o Cloud DNS para o seu domínio, consulte os passos para adicionar um novo registo ao seu domínio alojado. Se estiver a usar outro fornecedor de DNS, consulte a respetiva documentação para adicionar um registo CNAME.

  • Pode repetir este passo para cada domínio para o qual precisa de emitir um certificado.
  • Os certificados podem conter vários domínios ou pode optar por emitir um certificado por domínio, conforme necessário. Depois de ter uma autorização para um domínio, pode usá-la para emitir certificados.
  • Recomendamos que crie menos certificados no total, cada um com todos os nomes de domínio usados para o seu serviço. Isto melhora o desempenho do cliente quando usa vários domínios, porque os clientes podem beneficiar da retoma de TLS com maior frequência.
  • Cada serviço de cache edge pode fazer referência a até cinco certificados. Ao emitir menos certificados, pode manter-se dentro deste limite.

Se precisar de obter os valores dos registos de DNS numa data posterior, faça um pedido para o authorizationName que forneceu quando criou a autorização de DNS:

Crie um certificado

Depois de adicionar o registo DNS que demonstra a propriedade dos domínios para os quais quer criar um certificado, pode emitir um pedido de criação de certificado.

A lista de dnsAuthorizations tem de corresponder aos nomes das autorizações existentes que criou anteriormente no processo. Se quiser adicionar vários domínios ao mesmo certificado, forneça uma lista de domains[] e dnsAuthorizations[] correspondentes quando fizer o pedido.

Para criar um certificado com uma autorização para test.example.com denominada test-example-com:

gcloud

Use o comando gcloud certificate-manager certificates:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAME" \
    --dns-authorizations="DOMAIN_NAME_AUTH" \
    --scope=EDGE_CACHE

Isto cria um certificado com cada autorização de DNS no estado AUTHORIZING e o certificado no estado PROVISIONING:

Create request issued for: [DOMAIN_NAME]
Waiting for operation [projects/my-project/locations/global/operations/operatio
n-1613425627385-5bb66ed644e91-3e2a2f1f-71979cf8] to complete...done.
Created certificate [CERTIFICATE_NAME].

Terraform

resource "google_certificate_manager_certificate" "default" {
  name        = "example-dns-cert"
  description = "example dns certificate"
  scope       = "EDGE_CACHE"
  managed {
    domains = [
      google_certificate_manager_dns_authorization.default.domain,
    ]
    dns_authorizations = [
      google_certificate_manager_dns_authorization.default.id,
    ]
  }
}

A criação do certificado pode demorar alguns minutos (e até uma hora) a ser concluída, consoante o seguinte:

  • A rapidez com que o seu fornecedor de DNS propaga as alterações de configuração.
  • Quantos domínios está a tentar validar e para os quais está a criar certificados.

O campo state apresenta o estado atual do certificado:

  • APROVISIONAMENTO: o certificado ainda está a ser aprovisionado. Isto deve-se provavelmente ao facto de o pedido de criação do certificado ter sido feito recentemente.
  • FAILED: devolvido após várias tentativas de validar o domínio ou emitir o certificado. Para ver detalhes, consulte os campos provisioning_issue, authorization_attempt_info e failure_reason.
  • ATIVO: o domínio foi validado com êxito e o certificado foi aprovisionado.

Para verificar o estado do certificado:

gcloud

Use o comando gcloud certificate-manager certificates:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Neste exemplo, a autorização de DNS é AUTHORIZED e o estado do certificado é ACTIVE:

createTime: '2021-02-07T20:03:39.867762684Z'
expireTime: '2021-03-09T19:20:41Z'
managed:
  authorizationAttemptInfo:
  - domain: DOMAIN_NAME
    state: AUTHORIZED
  dnsAuthorizations:
  - projects/111111111111/locations/global/dnsAuthorizations/test-example-com
  domains:
  - DOMAIN_NAME
  state: ACTIVE
name: projects/my-project/locations/global/certificates/test-example-com
scope: EDGE_CACHE
subjectAlternativeNames:
- DOMAIN_NAME
updateTime: '2021-02-07T20:03:40.297242738Z'

Depois de o certificado ser ACTIVE, pode anexá-lo a um serviço de cache na extremidade.

Anexe um certificado a um serviço

Depois de criar um certificado gerido, pode associá-lo a um ou mais dos seus serviços de cache na extremidade. Os certificados podem ser anexados a serviços existentes e novos atualizando a lista de edgeSslCertificates no serviço.

Tem de ter as seguintes autorizações de IAM para anexar certificados a um serviço de cache na extremidade:

  • certificatemanager.certs.get
  • certificatemanager.certs.list
  • certificatemanager.certs.use
  • networkservices.edgeCacheServices.get
  • networkservices.edgeCacheServices.list
  • networkservices.edgeCacheServices.update

Para anexar um certificado a um serviço, conclua os seguintes passos.

gcloud

Execute o comando gcloud edge-cache services export para exportar o ficheiro YAML do seu serviço:

gcloud edge-cache services export MY_SERVICE \
    --destination=my-service.yaml

Edite o ficheiro YAML exportado para adicionar o seu certificado:

name: MY_SERVICE
edgeSslCertificates:
- projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

Execute o comando gcloud edge-cache services import:

gcloud edge-cache services import MY_SERVICE \
    --source=my-service.yaml

Saída:

Request issued for: [MY_SERVICE]
Updated service [MY_SERVICE]

O comando devolve uma descrição do seu serviço, incluindo a lista de edgeSslCertificates agora anexada:

  name: MY_SERVICE
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

Depois de atualizar a configuração, o certificado propaga-se a todas as localizações periféricas em poucos minutos. Para testar se o certificado está associado ao seu serviço de cache na extremidade antes de fazer alterações ao DNS, pode emitir um pedido para o endereço IPv4 ou IPv6 associado ao seu serviço.

Substitua e remova certificados

Pode adicionar e remover certificados atualizando a lista de certificados.

Quando usa a flag --edge-ssl-certificate da CLI gcloud, os certificados só são anexados à lista de certificados existentes e não são substituídos. Isto evita que remova acidentalmente um certificado válido e ativo.

Para remover o certificado test-example-com do nosso serviço no exemplo seguinte, pode exportar o seu serviço para YAML através dos comandos de importação e exportação

  name: my-service
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/test-example-com
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

Os comandos seguintes mostram como exportar o serviço, remover a referência do certificado e importar o serviço atualizado.

gcloud

Use o comando gcloud edge-cache services:

gcloud edge-cache services export MY_SERVICE --destination=my-service.yaml
Exported [projects/my-project/locations/global/edgeCacheServices/MY_SERVICE] to 'my-service.yaml'.

Remova os certificados que já não quer que o serviço use através do seu editor de texto preferido:

  name: MY_SERVICE
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

Guarde o ficheiro modificado e, em seguida, importe o serviço atualizado:

gcloud

Use o comando gcloud edge-cache services:

gcloud edge-cache services import MY_SERVICE --source=my-service.yaml
Request issued for: [MY_SERVICE]
Updated service [MY_SERVICE].

Não existe limite para o número de serviços a que um certificado pode ser associado e cada serviço de cache edge pode fazer referência a um máximo de cinco certificados.

Certificados autogeridos

Pode carregar os seus próprios certificados para a RFC de multimédia se tiver exemplos de utilização específicos que o exijam.

Para carregar um certificado e a respetiva chave associada ao Gestor de certificados:

gcloud

Use o comando gcloud certificate-manager certificates. Certifique-se de que especifica --scope=EDGE_CACHE para certificados associados à RFC de multimédia.

gcloud certificate-manager certificates create stream-example-com \
    --certificate-file=CERT.pem \
    --private-key-file=PRIVATE_KEY.pem \
    --scope=EDGE_CACHE
Create request issued for: [stream-example-com]
Created certificate [stream-example-com].

Depois de carregar o certificado, pode anexá-lo a um EdgeCacheService como faria com um certificado gerido.

Resolva problemas de emissão de certificados

Consulte o guia de resolução de problemas sobre como resolver erros comuns de autorização e emissão de certificados.

O que se segue?