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
- Certifique-se de que você esteja familiarizado com a visão geral dos certificados SSL.
- Verifique se você tem os nomes de domínio que quer usar no seu certificado SSL gerenciado pelo Google. Se você estiver usando o Google Domains, consulte Registrar um domínio.
Verifique se você ativou a API Compute Engine no projeto.
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:
- Você é um proprietário ou
editor do projeto (
roles/owner
ouroles/editor
). - Você tem o papel de administrador de segurança do Compute
(
compute.securityAdmin
) e o papel de Administrador de rede do Compute (compute.networkAdmin
) no projeto. - Você tem um papel personalizado no projeto, o que inclui as
permissões
compute.sslCertificates.*
e uma ou ambas (compute.targetHttpsProxies.*
ecompute.targetSslProxies.*
), dependendo do tipo de balanceador de carga utilizado.
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.
- Acesse a guia Certificados clássicos no Console do Google Cloud.
Acessar os certificados clássicos - Clique em Criar certificado SSL.
- Digite um nome e uma descrição opcional para o certificado.
- Selecione Criar certificado gerenciado pelo Google.
- Adicione os domínios.
- 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 globalDESCRIPTION
: uma descrição para o certificado SSL globalDOMAIN_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
.
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.
- Acesse a guia Certificados clássicos no Console do Google Cloud.
Acessar os certificados clássicos - (Opcional) Filtre a lista de certificados SSL.
- Verifique a coluna Status.
- 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:
- Configurar um balanceador de carga de aplicativo externo global com um back-end do Compute Engine
- Configurar um balanceador de carga de aplicativo clássico com um back-end do Compute Engine
- Configurar um balanceador de carga de rede de proxy externo com um proxy SSL
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.
- Acesse a página Balanceamento de carga no Console do Google Cloud.
Acessar balanceamento de carga - Clique no nome do balanceador de carga.
- Clique em Editar .
- Clique em Configuração de front-end.
- Clique no front-end correto (precisa ser HTTPS, HTTP/2, SSL).
- Clique em Certificados adicionais e selecione seu certificado gerenciado pelo Google na lista suspensa.
- 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írgulasVerifique 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
.
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:
Inicie o processo para criar a substituição do certificado SSL gerenciado pelo Google. Este certificado não se torna ATIVO neste momento.
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:
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
.Aguarde mais 30 minutos para garantir que o certificado de substituição esteja disponível para todos os Google Front Ends (GFEs).
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:
Aguarde 10 minutos e confirme se o balanceador de carga está usando o certificado SSL substituto em vez do antigo.
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:
- Criar um novo certificado gerenciado pelo Google.
- 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.
- Aguarde até que o Status do
certificado gerenciado pelo Google seja
ACTIVE
. - Aguarde 30 minutos para permitir que o novo certificado seja propagado para a disponibilização dos Google Front Ends (GFEs).
- 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:
Exclua os proxies de destino que se referem a esse certificado.
Atualize os proxies de destino que se referem a esse certificado para excluí-lo. As etapas variam da seguinte maneira:
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.
- Acesse a guia Certificados clássicos no Console do Google Cloud.
Acessar os certificados clássicos - Selecione o certificado SSL que você quer excluir.
- Clique em Excluir.
- 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
- Para resolver problemas de certificados SSL, consulte Como solucionar problemas de certificados SSL.
- Para usar um script do Terraform que cria um certificado gerenciado pelo Google, consulte o exemplo do Cloud Run nos Exemplos de módulo do Terraform para o balanceador de carga de aplicativo externo.