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 de conteúdo multimédia, 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 indicou 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 é propagado para 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 em relação ao 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 para o 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 na nuvem.

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?