Usar certificados SSL gerenciados pelo Google

Nesta página, você verá como criar e usar certificados SSL gerenciados pelo Google do Compute Engine.

Para criar certificados gerenciados pelo Google usando o Gerenciador de certificados, consulte a Visão geral da implantação.

Os certificados SSL gerenciados pelo Google são de validação de domínio (DV) que o Google Cloud recebe e gerencia para seus domínios. Eles são compatíveis com vários nomes de host em cada certificado, e o Google os renova automaticamente.

Os certificados gerenciados pelo Google são compatíveis com os seguintes balanceadores de carga:

  • Balanceador de carga de aplicativo externo global
  • Balanceador de carga de aplicativo clássico
  • Balanceador de carga de rede de proxy externo (com um proxy SSL de destino)

Os certificados SSL gerenciados pelo Google do Compute Engine não são compatíveis com balanceadores de carga de aplicativo externos regionais, balanceadores de carga de aplicativo internos regionais ou balanceadores de carga de aplicativo internos entre regiões. Para esses balanceadores de carga, você pode usar certificados SSL autogerenciados do Compute Engine ou considerar usar o Gerenciador de certificados.

Também é possível usar certificados SSL gerenciados com o Google Kubernetes Engine. Para mais informações, consulte Como usar certificados SSL gerenciados pelo Google.

É possível criar um certificado gerenciado pelo Google antes, durante ou depois de criar o balanceador de carga. Nesta página, consideramos que você esteja criando o certificado do Compute Engine antes ou depois de criar o balanceador de carga, sem criação simultânea. Para criar o certificado durante a criação do seu balanceador de carga, consulte as páginas de instruções sobre o balanceador de carga.

Antes de começar

Permissões

Para seguir este guia, você precisa ser capaz de criar e modificar certificados SSL no projeto. É possível fazer isso se uma das seguintes condições for verdadeira:

Etapa 1. criar um certificado SSL gerenciado pelo Google

É possível criar um certificado gerenciado pelo Google antes, durante ou depois de criar o balanceador de carga. Durante o processo de criação de um balanceador de carga no console do Google Cloud, é possível usar o console do Google Cloud para criar seu certificado. Como alternativa, é possível criar seu certificado antes ou depois de criar seu balanceador de carga. Esta etapa mostra como criar um certificado que possa ser adicionado posteriormente a um ou mais balanceadores de carga.

Caso você já tenha criado o certificado SSL gerenciado pelo Google, poderá ignorar esta etapa.

Console

Trabalhe com certificados SSL globais na guia Certificados clássicos da página Gerenciador de certificados.

  1. Acesse a guia Certificados clássicos no Console do Google Cloud.
    Acessar os certificados clássicos
  2. Clique em Criar certificado SSL.
  3. Digite um nome e uma descrição opcional para o certificado.
  4. Selecione Criar certificado gerenciado pelo Google.
  5. Adicione os domínios.
  6. Clique em Criar.

gcloud

Para criar um certificado SSL global gerenciado pelo Google para um balanceador de carga de aplicativo externo global ou um balanceador de carga de rede de proxy externo, use o comando gcloud compute ssl-certificates create:

gcloud compute ssl-certificates create CERTIFICATE_NAME \
    --description=DESCRIPTION \
    --domains=DOMAIN_LIST \
    --global

Substitua:

  • CERTIFICATE_NAME: um nome para o certificado SSL global
  • DESCRIPTION: uma descrição para o certificado SSL global
  • DOMAIN_LIST: um único nome de domínio ou uma lista separada por vírgulas de nomes de domínio a serem usados neste certificado

Terraform

Para criar o certificado SSL gerenciado pelo Google, use o recurso google_compute_managed_ssl_certificate.

resource "google_compute_managed_ssl_certificate" "lb_default" {
  provider = google-beta
  name     = "myservice-ssl-cert"

  managed {
    domains = ["example.com"]
  }
}

api

Crie o método de recurso sslCertificates.insert do certificado gerenciado pelo Google, substituindo PROJECT_ID pelo ID do projeto.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/sslCertificates
{
  "name": "ssl-certificate-name",
  "managed": {
    "domains": [
      "www.example.com"
    ]
  },
  "type": "MANAGED"
}

Verificar o status de um certificado SSL gerenciado pelo Google

Console

Verifique o status dos certificados SSL globais na guia Certificados clássicos da página Gerenciador de certificados.

  1. Acesse a guia Certificados clássicos no Console do Google Cloud.
    Acessar os certificados clássicos
  2. (Opcional) Filtre a lista de certificados SSL.
  3. Verifique a coluna Status.
  4. Para ver mais detalhes, clique no nome do certificado.

gcloud

Para determinar o status de seu certificado gerenciado pelo Google, use comandos gcloud compute. Depois de executar o comando apropriado, observe o seguinte:

  • The managed status.
  • The domain status.

Para listar seus certificados SSL gerenciados pelo Google, use o comando gcloud compute ssl-certificates list com a sinalização --global.

gcloud compute ssl-certificates list \
   --global

É possível usar o comando gcloud compute ssl-certificates describe, substituindo CERTIFICATE_NAME:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
   --global \
   --format="get(name,managed.status, managed.domainStatus)"

Nesse momento, o status do certificado e o status do domínio são PROVISIONING. Depois que concluir as etapas desta página, os status serão alterados para ACTIVE.

Para mais informações sobre os status, consulte a página de solução de problemas.

Etapa 2: criar ou atualizar o balanceador de carga

Para se tornar ACTIVE, o certificado SSL gerenciado pelo Google precisa estar associado a um balanceador de carga, especificamente ao proxy de destino do balanceador de carga.

Depois de criar o certificado SSL e ele estiver no estado PROVISIONING, será possível usá-lo durante a criação do balanceador de carga, conforme descrito nos guias de instruções a seguir:

Uma outra alternativa é usar o certificado para atualizar um balanceador de carga existente, conforme descrito aqui:

Console

Ao atualizar um balanceador de carga de aplicativo externo global ou um balanceador de carga de rede de proxy externo usando o Console do Google Cloud, o Google Cloud associa automaticamente seu certificado SSL ao proxy de destino correto.

  1. Acesse a página Balanceamento de carga no Console do Google Cloud.
    Acessar balanceamento de carga
  2. Clique no nome do balanceador de carga.
  3. Clique em Editar .
  4. Clique em Configuração de front-end.
  5. Clique no front-end correto (precisa ser HTTPS, HTTP/2, SSL).
  6. Clique em Certificados adicionais e selecione seu certificado gerenciado pelo Google na lista suspensa.
  7. Clique em Criar.

gcloud

Se quiser associar um certificado SSL ao proxy HTTPS de destino para um balanceador de carga de rede de passagem externo global, use o comando gcloud compute target-https-proxies update com as sinalizações --global-ssl-certificates e --global:

gcloud compute target-https-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST \
    --global-ssl-certificates \
    --global

Se quiser associar um certificado SSL ao proxy SSL de destino para um balanceador de carga de proxy externo, use o comando gcloud compute target-ssl-proxies update:

gcloud compute target-ssl-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST

Substitua:

  • TARGET_PROXY_NAME: o nome do proxy de destino do balanceador de carga.
  • SSL_CERTIFICATE_LIST: uma lista de recursos de certificado SSL delimitada por vírgulas

    Verifique se a lista de certificados referenciados inclui todos os certificados SSL válidos mais antigos, bem como o novo. O comando gcloud compute target-ssl-proxies update substitui os valores originais de --ssl-certificates pelo novo valor.

Terraform

Para criar o proxy HTTPS de destino, use o recurso google_compute_target_https_proxy.

Para criar o proxy SSL de destino, use o recurso google_compute_target_ssl_proxy.

resource "google_compute_target_https_proxy" "lb_default" {
  provider = google-beta
  name     = "myservice-https-proxy"
  url_map  = google_compute_url_map.lb_default.id
  ssl_certificates = [
    google_compute_managed_ssl_certificate.lb_default.name
  ]
  depends_on = [
    google_compute_managed_ssl_certificate.lb_default
  ]
}

Cada proxy HTTPS de destino ou proxy SSL de destino precisa referir-se a pelo menos um certificado SSL. Um proxy de destino pode referir-se a mais de um certificado SSL. Para mais detalhes, consulte Pools e proxies de destino nas cotas e limites do recurso de balanceamento de carga.

Etapa 3: verificar a associação ao proxy de destino

Depois de criar ou atualizar seu balanceador de carga, você pode garantir que o certificado SSL esteja associado ao proxy de destino do balanceador de carga.

Se você ainda não sabe o nome do proxy de destino, use a chamada gcloud compute target-https-proxies list e os comandos gcloud compute target-ssl-proxies list para listar os proxies de destino no seu projeto.

Execute o comando a seguir para verificar a associação entre o certificado SSL e o proxy de destino.

Para balanceadores de carga de aplicativo externos globais:

gcloud compute target-https-proxies describe TARGET_HTTPS_PROXY_NAME \
    --global \
    --format="get(sslCertificates)"

Para balanceadores de carga de rede de proxy externos:

gcloud compute target-ssl-proxies describe TARGET_SSL_PROXY_NAME \
    --format="get(sslCertificates)"

Nesse momento, seu status de certificado gerenciado pelo Google ainda pode ser PROVISIONING. O Google Cloud está trabalhando com a autoridade de certificação para emitir o certificado. Provisionar um certificado gerenciado pelo Google pode levar até 60 minutos.

Etapa 4: atualizar os registros DNS A e AAAA para apontar para o endereço IP do balanceador de carga

Os registros DNS podem ser gerenciados no site do seu registrador, host DNS ou ISP.

Ao gerenciar seus registros, observe o seguinte:

  • Verifique se os registros A de DNS (para IPv4) e os registros AAAA de DNS (para IPv6) dos seus domínios e subdomínios apontam para o endereço IP associado às regras de encaminhamento do balanceador de carga.

    Para provisionar certificados SSL, verifique se os registros A e AAAA apontam para o endereço IP do balanceador de carga em um DNS público.

  • Se você estiver usando o Cloud DNS, configure seus domínios e atualize os servidores de nomes.

  • Se você tiver vários domínios em um certificado gerenciado pelo Google, adicione ou atualize os registros DNS de todos os domínios e subdomínios para apontar para o endereço IP do balanceador de carga. A validação do certificado falhará se os domínios e subdomínios de um certificado gerenciado pelo Google apontarem para outro IP diferente do endereço IP da regra de encaminhamento do balanceador de carga.

Os certificados gerenciados são fornecidos quando as seguintes condições são verdadeiras:

  • Os registros DNS do seu domínio usam um registro CNAME que aponta para outro domínio.
  • O outro domínio contém um registro A ou AAAA que aponta para o endereço IP do seu balanceador de carga.

Para verificar sua configuração, execute o comando dig. Por exemplo, suponha que seu domínio seja www.example.com. Execute este comando dig:

dig www.example.com
; <<>> DiG 9.10.6 <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31748
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.example.com.           IN  A

;; ANSWER SECTION:
www.example.com. 1742    IN      CNAME   example.net.
example.net.      12     IN      A       34.95.64.10

;; Query time: 43 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Jun 03 16:54:44 PDT 2020
;; MSG SIZE  rcvd: 193

Neste exemplo, 34.95.64.10 é o endereço IP do balanceador de carga.

Os resolvedores de DNS na Internet estão fora do controle do Google Cloud. Elas armazenam em cache os conjuntos de registros de recurso de acordo com o time to live (TTL), o que significa que um comando dig ou nslookup pode retornar um valor armazenado em cache. Se você estiver usando o Cloud DNS, consulte Propagação de alterações.

Tempo de propagação do registro DNS

Os registros DNS A e AAAA atualizados recentemente podem levar um tempo significativo para serem totalmente propagados. Às vezes, a propagação pela Internet leva até 72 horas em todo o mundo, embora normalmente leve algumas horas.

Execute o seguinte comando:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --format="get(managed.domainStatus)"

Se o status do domínio for FAILED_NOT_VISIBLE, talvez a propagação não esteja concluída.

Para informações detalhadas, consulte a seção de status de domínio do certificado SSL gerenciado pelo Google na página "Solução de problemas".

Etapa 5: testar com o OpenSSL

Depois que os status de certificado e domínio estiverem ativos, pode levar até 30 minutos para que o balanceador de carga comece a usar seu certificado SSL gerenciado pelo Google.

Para testar, execute o seguinte comando OpenSSL, substituindo DOMAIN pelo nome DNS e IP_ADDRESS pelo endereço IP do balanceador de carga.

echo | openssl s_client -showcerts -servername DOMAIN -connect IP_ADDRESS:443 -verify 99 -verify_return_error

Esse comando gera os certificados que o balanceador de carga apresenta ao cliente. A saída precisa incluir a cadeia de certificados, Verify return code: 0 (ok) e outras informações detalhadas.

Outros procedimentos

Esta seção contém outros procedimentos para gerenciar seus certificados.

Suporte a vários domínios com um certificado SSL gerenciado pelo Google

Vários nomes alternativos de assunto são aceitos. Cada certificado SSL gerenciado pelo Google aceita até o número máximo de domínios por certificado SSL gerenciado pelo Google.

Se você tiver mais do que o número máximo de domínios, precisará solicitar vários certificados gerenciados pelo Google. Por exemplo, se você tentar criar um certificado gerenciado pelo Google com domínios (valor máximo +1), o Google não emitirá um certificado. Em vez disso, é necessário criar dois ou mais certificados gerenciados pelo Google e declarar explicitamente quais domínios estão associados a cada um deles.

O Google Cloud implementa a indicação do nome do servidor (SNI, na sigla em inglês), conforme definido no RFC 6066.

Se algum dos domínios ou subdomínios em um certificado gerenciado não apontar para o endereço IP do balanceador de carga, ou estiver apontando para um IP junto com o IP do balanceador de carga, o processo de renovação vai falhar. Para evitar falhas na renovação, verifique se todos os domínios e subdomínios apontam para o endereço IP do balanceador de carga.

Renovar um certificado SSL gerenciado pelo Google

O Google Cloud provisiona certificados gerenciados válidos por 90 dias. Cerca de um mês antes da expiração, o processo de renovação do certificado começa automaticamente. Nesse caso, uma autoridade de certificação (CA) é escolhida para fazer parte do registro DNS da autorização de autoridade de certificação (CAA) do domínio e da lista de CAs.

A CA usada para a renovação pode ser diferente da CA usada para emitir a versão anterior do seu certificado gerenciado pelo Google. É possível controlar a CA que o Google Cloud usará na renovação, garantindo que o registro DNS da CAA do seu domínio especifique uma única CA da lista de CAs usadas pelos certificados gerenciados pelo Google.

Se algum dos domínios ou subdomínios em um certificado gerenciado não apontar para o endereço IP do balanceador de carga, ou estiver apontando para um IP junto com o IP do balanceador de carga, o processo de renovação vai falhar. Para evitar falhas na renovação, verifique se todos os domínios e subdomínios apontam para o endereço IP do balanceador de carga.

Especificar as CAs que podem emitir seu certificado gerenciado pelo Google

No software DNS, recomendamos que você autorize explicitamente as CAs que quer permitir para emitir seu certificado gerenciado pelo Google. Embora não seja obrigatório em todos os cenários, isso é necessário em determinadas situações.

Por exemplo, se você estiver usando um serviço DNS externo e seu certificado gerenciado pelo Google for revogado, o serviço poderá validar apenas um novo certificado emitido por uma ou mais CAs específicas.

Para fazer isso, crie ou modifique um registro de CAA para incluir pki.goog, letsencrypt.org ou ambos. Se você não tiver um registro de CAA, o comportamento padrão será permitir pki.goog e letsencrypt.org.

DOMAIN. CAA 0 issue "pki.goog"
DOMAIN. CAA 0 issue "letsencrypt.org"

O suporte para certificados letsencrypt.org é fornecido com base no melhor esforço. Para melhor confiabilidade, permita pki.goog e letsencrypt.org. Se você especificar apenas uma das CAs, somente ela será usada para criar e renovar o certificado: Essa abordagem não é recomendada.

Quando você cria o certificado, o Google Cloud seleciona pki.goog ou letsencrypt.org e utiliza esse código para emitir o certificado. Quando o Google renovar seu certificado, talvez ele seja emitido pela outra CA, dependendo das CAs especificadas no registro da CAA (se você tiver criado um). Seu certificado pode ser renovado por uma CA diferente em um dos seguintes casos:

  • Você não tem um registro DNS de CAA para seu domínio.
  • Você incluiu as duas CAs no registro DNS de CAA.

Para mais informações, consulte o registro de DNS da CAA da RFC.

letsencrypt.org emite Nomes de domínio internacionalizados (IDNs). pki.goog não é compatível com IDNs, atualmente.

Se você estiver usando o Cloud DNS, saiba como adicionar um registro e defina a sinalização --type como CAA.

Substituir um certificado SSL atual

Para substituir um certificado SSL existente:

  1. Inicie o processo para criar a substituição do certificado SSL gerenciado pelo Google. Este certificado não se torna ATIVO neste momento.

  2. Atualize o proxy de destino para que a lista de certificados referenciados inclua o certificado SSL substituto com os atuais. As etapas para atualizar o proxy de destino variam da seguinte maneira:

  3. Aguarde a conclusão do provisionamento do certificado SSL substituto. Isso pode levar até 60 minutos. Quando o provisionamento for concluído, o status do certificado se tornará ACTIVE.

  4. Aguarde mais 30 minutos para garantir que o certificado de substituição esteja disponível para todos os Google Front Ends (GFEs).

  5. Atualize o proxy de destino para remover o certificado SSL que está sendo substituído da lista de certificados referenciados. As etapas para atualizar um proxy de destino variam da seguinte maneira:

  6. Aguarde 10 minutos e confirme se o balanceador de carga está usando o certificado SSL substituto em vez do antigo.

  7. Atualize o proxy de destino novamente, removendo o recurso de certificado SSL antigo. É possível excluir o recurso de certificado SSL se ele não for mais referenciado por um proxy de destino.

Se você não excluir o certificado SSL antigo, ele permanecerá como ACTIVE (ativo) até expirar.

Migrar de certificados SSL autogerenciáveis para certificados SSL gerenciados pelo Google

Ao fazer a migração de um balanceador de carga que usa certificados SSL autogerenciáveis para os gerenciados pelo Google, execute as seguintes etapas nesta sequência:

  1. Criar um novo certificado gerenciado pelo Google.
  2. Associe um novo certificado gerenciado pelo Google ao proxy de destino correto enquanto mantém a associação do proxy de destino com o certificado autogerenciado existente.
  3. Aguarde até que o Status do certificado gerenciado pelo Google seja ACTIVE.
  4. Aguarde 30 minutos para permitir que o novo certificado seja propagado para a disponibilização dos Google Front Ends (GFEs).
  5. Atualize o proxy de destino novamente, removendo o recurso de certificado autogerenciado. É possível excluir o recurso de certificado SSL autogerenciado se ele não for mais referenciado por um proxy de destino.

Excluir um certificado SSL

Antes de excluir um certificado SSL, verifique se nenhum proxy de destino HTTPS ou SSL refere-se a esse certificado. Faça isso de duas maneiras:

Para excluir um ou mais certificados SSL:

Console

Você pode excluir os certificados SSL globais na guia Certificados Clássicos da página Gerenciador de certificados.

  1. Acesse a guia Certificados clássicos no Console do Google Cloud.
    Acessar os certificados clássicos
  2. Selecione o certificado SSL que você quer excluir.
  3. Clique em Excluir.
  4. Para confirmar, clique em Excluir novamente.

gcloud

Para excluir um certificado SSL global (para balanceadores de carga de aplicativo externos globais ou balanceadores de carga de rede de proxy externo), use o comando gcloud compute ssl-certificates delete com o comando --global:

gcloud compute ssl-certificates delete CERTIFICATE_NAME \
    --global

Substitua:

  • CERTIFICATE_NAME: o nome do certificado SSL.

A seguir