Configurar certificados SSL (TLS)

Após criar um serviço do Media CDN (ou serviços), você pode emitir e anexar certificados SSL (TLS) a oferecem suporte à conectividade segura em navegadores e aplicativos para dispositivos móveis.

Emitir um certificado gerenciado

Para criar um certificado gerenciado e anexá-lo ao Media CDN faça o seguinte:

  1. Demonstre a propriedade ("autorização") dos domínios para os quais você quer emitir certificados criando um token de desafio e adicionando um registro DNS.
  2. Crie um certificado do tipo EDGE_CACHE com um ou mais nomes de domínio com base nessa autorização.
  3. anexar esse certificado a um ou mais serviços de armazenamento em cache de borda;

Você precisa ter as seguintes permissões do Identity and Access Management para autorizar, criar e anexar certificados a um serviço de armazenamento em cache de borda:

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

Usuários que precisam anexar um certificado existente a um CDN de mídia exigem os parâmetros certificatemanager.certs.get, certificatemanager.certs.list e certificatemanager.certs.use permissões do IAM.

Antes de começar

Criar uma autorização de DNS

Primeiro, você deve criar uma autorização de DNS para demonstrar a propriedade de domínio antes de emitir certificados para ele. A autorização de DNS usa o parâmetro DNS-01 ACME e permite emitir um certificado antes de direcionar o tráfego voltado para o usuário ao serviço de armazenamento em cache de borda.

Defina domain como o nome de domínio em que você quer 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 retorna uma resposta com os detalhes do registro DNS que você precisa 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 você estiver usando o Cloud DNS no seu domínio, consulte as etapas para adicionar um novo registro ao seu domínio hospedado. Se você estiver usando outro provedor de DNS, consulte o documentação para adicionar um registro CNAME.

  • Você pode repetir esta etapa para cada domínio que precisar emitir uma certificado.
  • Os certificados podem conter vários domínios, ou você pode emitir uma certificado por domínio, conforme necessário. Depois de ter a autorização domínio, você pode usá-lo para emitir certificados.
  • Recomendamos criar menos certificados, cada um com todas as de domínio usados para seu serviço. Isso melhora a performance do cliente quando usar vários domínios, porque os clientes podem se beneficiar mais da retomada do TLS com frequência.
  • Cada serviço de armazenamento em cache de borda pode referenciar até cinco certificados. Emitindo menos certificados, você fica dentro desta ou ao atingir um limite estabelecido.
.

Se você precisar recuperar os valores do registro DNS em uma data posterior, faça uma solicitação para o authorizationName fornecido ao criar o DNS. autorização:

Criar um certificado

Depois de adicionar o registro DNS que demonstre a propriedade dos domínios que você para criar um certificado, é possível emitir uma solicitação de criação de certificado.

A lista de dnsAuthorizations precisa corresponder aos nomes das listas autorizações que você criou anteriormente no processo. Se você quiser adicionar vários domínios ao mesmo certificado, forneça uma lista de domains[] e os dnsAuthorizations[] ao fazer a solicitação.

Para criar um certificado usando uma autorização para test.example.com chamada 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

Isso cria um certificado para cada autorização de DNS no 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,
    ]
  }
}

Pode levar alguns minutos (a até uma hora) para a criação do certificado concluído, dependendo do seguinte:

  • a velocidade com que o provedor de DNS propaga mudanças de configuração;
  • Para quantos domínios você está tentando validar e criar certificados.

O campo state mostra o status atual do certificado:

  • PROVISIONING: o certificado ainda está sendo provisionado. Isso é provável que a solicitação de criação do certificado tenha sido feita recentemente.
  • FALHA: retornado após várias tentativas de validação do domínio. ou emitir o certificado. Para mais detalhes, consulte provisioning_issue, Campos authorization_attempt_info e failure_reason.
  • ACTIVE: o domínio foi validado e o certificado. foi provisionado.

Para verificar o status 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 certificado o estado é 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 que o certificado for ACTIVE, será possível anexá-lo a uma serviço de armazenamento em cache de borda.

Anexar um certificado a um serviço

Depois de criar um certificado gerenciado, você pode associá-lo a um ou mais serviços de armazenamento em cache próximo dos usuários finais. Para anexar certificados a serviços novos e existentes, basta atualizar o lista de edgeSslCertificates no serviço.

Você precisa ter as seguintes permissões do IAM para anexar certificados para um serviço de armazenamento em cache de borda:

  • 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 as etapas a seguir.

gcloud

Execute o comando gcloud edge-cache services export para exportar os registros Arquivo YAML:

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

Edite o arquivo YAML exportado para adicionar 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 retorna uma descrição do serviço, incluindo o Lista de edgeSslCertificates anexada:

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

Depois que você atualiza a configuração, o certificado é propagado para todas as extremidades locais em minutos. Para testar se o certificado está associado ao seu serviço de armazenamento em cache de borda antes de fazer alterações no DNS, é possível emitir uma solicitação o endereço IPv4 ou IPv6 associado ao seu serviço.

Substituir e remover certificados

Os certificados podem ser adicionados e removidos atualizando a lista de certificados.

Ao usar a sinalização --edge-ssl-certificate da CLI gcloud, certificados são apenas anexados à lista de certificados existentes, e não substituído. Isso evita a remoção acidental de um domínio por acidente.

Para remover o certificado test-example-com do nosso serviço no seguinte exemplo, você pode exportar seu serviço para YAML usando o 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 a seguir mostram como exportar o serviço e remover o 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 você não quer mais que o serviço use usando sua editor de texto preferido:

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

Salve o arquivo modificado e 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 há limite para o número de serviços que um certificado pode ser associado e cada serviço de armazenamento em cache de borda pode referenciar até cinco certificados.

Certificados autogerenciados

É possível fazer upload dos seus próprios certificados para o Media CDN se você tiver para os casos de uso específicos em que ele é necessário.

Para fazer o upload de um certificado e da chave associada ao Gerenciador de certificados:

gcloud

Use o comando gcloud certificate-manager certificates. Confirme se você especificar --scope=EDGE_CACHE para certificados associados a Media CDN do Google Cloud.

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].

Após o upload do certificado, será possível anexá-lo a um EdgeCacheService como faria com um certificado gerenciado.

Resolver problemas de emissão de certificados

Consulte o guia de solução de problemas para saber como resolver erros comuns de autorização e emissão de certificados.

A seguir