Como usar certificados SSL gerenciados pelo Google

Esta página discute como criar e usar certificados SSL gerenciados pelo Google.

Os certificados SSL gerenciados pelo Google são obtidos e gerenciados pelo Google Cloud, nos seus domínios, e renovados automaticamente. Estes são certificados de validação de domínio (DV, na sigla em inglês) que suportam vários nomes de host em cada certificado.

Um certificado SSL é necessário para determinados tipos de balanceadores de carga do Google Cloud, como:

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

Vários domínios

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 (o 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 certificado.

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

Quando o Google renova um certificado gerenciado que tem vários domínios, se algum dos domínios ou subdomínios não apontar para o endereço IP do balanceador de carga, o processo de renovação falhará. Após o provisionamento do certificado gerenciado, verifique se todos os domínios e subdomínios ainda apontam para o endereço IP do balanceador de carga para evitar uma falha na renovação.

Antes de começar

Permissões

Para acompanhar este guia, você precisa ter permissão para criar e modificar certificados SSL no seu projeto. Você terá essa permissão se tiver um dos papéis ou uma das permissões a seguir:

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 Cloud, é possível usar o Console do 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

É possível trabalhar com certificados SSL na guia Certificados da página Balanceamento de carga.

  1. Acesse a página "Certificados" no Console do Google Cloud.
    Acessar a página "Certificados"
  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

Com o comando gcloud compute ssl-certificates create, crie um certificado SSL global gerenciado pelo Google para um balanceador de carga HTTP(S) externo ou de proxy SSL:

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

Substitua os seguintes marcadores por valores válidos:

  • 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

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"
}

Como verificar o status do certificado SSL gerenciado pelo Google

Console

Verifique o status dos certificados SSL na guia Certificados da página Balanceamento de carga.

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

gcloud

É possível usar comandos gcloud compute para determinar o status de seu certificado gerenciado pelo Google. Depois de executar o comando apropriado, observe o seguinte:

  • The managed status.
  • The domain status.

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

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. O status muda para ACTIVE depois que você conclui todas as etapas nesta página.

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.

Quando o certificado SSL que você criar estiver no estado PROVISIONING, use-o 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

Quando você atualiza um balanceador de carga HTTP(S) externo ou um balanceador de carga do proxy SSL por meio do 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 a página "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 HTTP(S) externo, 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 SSL, use o comando gcloud compute target-ssl-proxies update:

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

Substitua os marcadores por valores válidos:

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

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 o balanceador de carga, execute o comando a seguir para verificar se o certificado SSL está associado ao proxy de destino do seu balanceador de carga.

Para balanceadores de carga HTTPS externos:

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

Para balanceadores de carga de proxy SSL:

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. O provisionamento de 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

No site do registrador, no host DNS ou no ISP (onde seus registros DNS são gerenciados), adicione ou atualize os registros DNS A (para IPv4) e os registros AAAA de DNS (para IPv6) dos seus domínios e subdomínios para que eles apontem para o Endereço IP associado às regras de encaminhamento do balanceador de carga.

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

Se você estiver usando vários domínios para um único certificado gerenciado pelo Google, adicione ou atualize os registros DNS de todos os domínios e subdomínios para que todos apontem para o endereço IP do balanceador de carga.

Depois de aguardar a conclusão da propagação do DNS, é possível verificar a configuração executando 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   www.example.com.edgekey.net.
www.example.com.edgekey.net. 21330 IN   CNAME   www.example.com.edgekey.net.globalredir.akadns.net.
www.example.com.edgekey.net.globalredir.akadns.net. 3356 IN CNAME   e6858.dsce9.akamaiedge.net.
e6858.dsce9.akamaiedge.net. 212 IN  A   203.0.113.5

;; 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, 203.0.113.5 é o endereço IP do balanceador de carga.

Além disso, execute novamente o seguinte comando:

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

Se o status do domínio for FAILED_NOT_VISIBLE, consulte a seção sobre o 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.

Renovação do 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, é escolhida uma autoridade de certificação (CA, na sigla em inglês) que está no registro DNS da CAA do seu domínio e na lista de CAs.

A CA usada para a renovação pode ser diferente da CA usada para emitir uma versão anterior do seu certificado gerenciado pelo Google. É possível controlar a CA usada pelo Google Cloud para a renovação. Para fazer isso, garanta que o registro DNS da Autorização de Autoridade de Certificação (CAA, na sigla em inglês) do seu domínio especifique uma única CA na lista de CAs usada pelos certificados gerenciados pelo Google.

Quando o Google renova um certificado gerenciado que tem vários domínios, se algum dos domínios ou subdomínios não apontar para o endereço IP do balanceador de carga, o processo de renovação falhará. Após o provisionamento do certificado gerenciado, verifique se todos os domínios e subdomínios ainda apontam para o endereço IP do balanceador de carga para evitar uma falha na renovação.

Procedimentos opcionais

Como especificar as CAs permitidas para emitir seu certificado gerenciado pelo Google

No software servidor DNS, especifique as CAs que você quer permitir para emitir seu certificado gerenciado pelo Google. Para fazer isso, crie ou modifique um registro CAA para incluir pki.goog, letsencrypt.org ou ambos. Se você não tiver um registro 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 CAA de DNS para seu domínio.
  • Você incluiu as duas CAs no registro CAA de DNS.

Para mais informações, consulte o RFC, registro DNS da autorização de autoridade de certificação (CAA).

Os nomes de domínio internacionalizados (IDNs, na sigla em inglês) são emitidos pela letsencrypt.org. No momento, não há suporte para pki.goog.

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

Como substituir um certificado SSL existente

Para substituir um certificado SSL existente:

  1. Inicie o processo de criação da substituição do certificado SSL gerenciado pelo Google. Observe que este certificado não se tornará ACTIVE (ativo) neste momento.

  2. Atualize o proxy de destino para que a lista de certificados referenciados inclua o certificado SSL substituto com os certificados SSL 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 aprovisionamento 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. Como opção, exclua o antigo recurso de certificado SSL.

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

Como 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 certificado autogerenciado.

Excluindo certificados 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

É possível excluir certificados SSL na guia Certificados da página Balanceamento de carga.

  1. Acesse a página "Certificados" no Console do Google Cloud.
    Acessar a página "Certificados"
  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 HTTP(S) externos ou balanceadores de carga de proxy SSL), use o comando gcloud compute ssl-certificates delete com o comando --global:

gcloud compute ssl-certificates delete CERTIFICATE_NAME \
    --global

Substitua os marcadores por valores válidos:

  • CERTIFICATE_NAME: o nome do certificado SSL

A seguir