Implante um certificado global gerenciado pelo Google com o Certificate Authority Service


Neste tutorial, explicamos o processo de implantação de certificado usando um certificado gerenciado pelo Google com o Certificate Authority Service como exemplo.

Os seguintes balanceadores de carga oferecem suporte a certificados gerenciados pelo Google com serviço de AC:

  • Balanceador de carga de aplicativo externo global
  • Balanceador de carga de aplicativo clássico
  • Balanceador de carga de aplicativo interno entre regiões
  • Balanceador de carga de rede de proxy externo global

Se uma política de emissão de certificado estiver em vigor no pool de ACs de destino, o provisionamento de certificados poderá falhar por um dos seguintes motivos:

  • A política de emissão de certificados bloqueou o certificado solicitado. Nesse caso, você não será cobrado, porque o certificado não foi emitido.
  • A política aplicou alterações ao certificado que não são compatíveis com o Gerenciador de certificados. Nesse caso, você ainda receberá a cobrança desde a emissão do certificado, mesmo que ele não seja totalmente compatível com o Gerenciador de certificados.

Os certificados emitidos conforme as etapas deste tutorial não são publicamente confiáveis. Se você quiser emitir certificados publicamente confiáveis, siga as etapas de um destes tutoriais:

Se você quiser migrar um certificado atual para o Gerenciador de certificados, siga as etapas em Migrar certificados para o Gerenciador de certificados.

Lembre-se de que, mesmo que você esteja usando um pool de ACs regional para emitir um certificado TLS gerenciado pelo Google, o certificado em si é global e pode ser usado em qualquer região.

Objetivos

Nesta seção, mostramos como concluir as seguintes tarefas:

  • Crie um certificado gerenciado pelo Google com o CA Service usando o Gerenciador de certificados.
  • Implantar o certificado em um balanceador de carga compatível usando um proxy HTTPS de destino.

Para mais informações sobre o processo de implantação do certificado, consulte Visão geral da implantação.

Antes de começar

  1. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  2. Verifique se você tem os seguintes papéis para concluir as tarefas deste tutorial:

    • Proprietário do Gerenciador de certificados:necessário para criar e gerenciar recursos do Gerenciador de certificados.
    • Administrador do balanceador de carga do Compute ou Administrador de rede do Compute:necessário para criar e gerenciar o proxy de destino HTTPS.
    • Administrador de serviço da autoridade de certificação:necessário para executar ações no serviço de AC.

    Para ver mais informações, consulte os seguintes tópicos:

  3. Ative a API CA Service.

  4. Criar um pool de CA. É preciso criar e ativar pelo menos uma AC neste pool de ACs.

Configurar a integração do CA Service com o Gerenciador de certificados

Configure o Gerenciador de certificados para fazer a integração com o CA Service da seguinte maneira:

  1. Use o seguinte comando para criar uma conta de serviço do Gerenciador de certificados no projeto de destino do Google Cloud:

    gcloud beta services identity create --service=certificatemanager.googleapis.com \
       --project=PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do projeto de destino do Google Cloud.

    O comando retorna o nome da identidade de serviço criada. Veja o exemplo a seguir:

    service-520498234@gcp-sa-certificatemanager.iam.gserviceaccount.com
    
  2. Conceda à conta de serviço do Gerenciador de certificados o papel de Solicitante de certificado no pool de ACs de destino da seguinte maneira:

    gcloud privateca pools add-iam-policy-binding CA_POOL \
       --location REGION \
       --member "serviceAccount:SERVICE_ACCOUNT" \
       --role roles/privateca.certificateRequester
    

    Substitua:

    • CA_POOL: o ID do pool de ACs de destino.
    • REGION: a região de destino do Google Cloud.
    • SERVICE_ACCOUNT: o nome completo da conta de serviço que você criou na etapa 1.
  3. Crie um recurso de configuração de emissão de certificados para o pool de AC:

    gcloud certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \
       --ca-pool=CA_POOL \
       [--lifetime=CERTIFICATE_LIFETIME] \
       [--rotation-window-percentage=ROTATION_WINDOW_PERCENTAGE] \
       [--key-algorithm=KEY_ALGORITHM]
    

    Substitua:

    • ISSUANCE_CONFIG_NAME: o nome exclusivo do recurso de configuração de emissão de certificados.
    • CA_POOL: o caminho completo do recurso e o nome do pool de ACs que você quer atribuir a este recurso de configuração de emissão de certificado.
    • CERTIFICATE_LIFETIME: a vida útil do certificado em dias. Os valores válidos são de 21 a 30 dias no formato de duração padrão. O valor padrão é de 30 dias (30D). Essa configuração é opcional.

    • ROTATION_WINDOW_PERCENTAGE: a porcentagem do ciclo de vida do certificado em que uma renovação é acionada. Essa configuração é opcional.

      O valor padrão é 66%. Defina a porcentagem da janela de rotação em relação ao ciclo de vida do certificado para que a renovação ocorra pelo menos sete dias após a emissão e pelo menos sete dias antes da expiração.

    • KEY_ALGORITHM: o algoritmo de criptografia usado para gerar a chave privada. Os valores válidos são ecdsa-p256 ou rsa-2048. O valor padrão é rsa-2048. Essa configuração é opcional.

Para mais informações sobre configurações de emissão de certificados, consulte Gerenciar configurações de emissão de certificados.

Criar um certificado gerenciado pelo Google emitido pela sua instância de serviço de AC

Crie um certificado gerenciado pelo Google emitido pela sua instância de serviço de AC da seguinte maneira:

Console

  1. No console do Google Cloud, acesse a página Gerenciador de certificados.

    Acessar o Gerenciador de certificados

  2. Na página exibida, selecione a guia Certificados.

  3. Clique em Adicionar certificado.

  4. Digite um Nome para o certificado.

    O nome precisa ser exclusivo no projeto.

  5. Opcional: digite a Descrição do certificado. A descrição ajudará você a identificar um certificado específico posteriormente.

  6. Em Local, escolha Global.

  7. Em Escopo, escolha qualquer uma das seguintes opções:

    1. Padrão: escolha o padrão para Balanceador de carga de aplicativo externo global, Balanceador de carga de aplicativo clássico ou Balanceador de carga de rede de proxy externo global.
    2. Todas as regiões: escolha todas as regiões para um balanceador de carga de aplicativo interno entre regiões
  8. Em Tipo de certificado, escolha Criar um certificado gerenciado pelo Google.

  9. Em Tipo de autoridade de certificação, escolha Particular.

  10. Especifique os Nomes de domínio do certificado. Insira uma lista separada por vírgulas dos domínios de destino. Além disso, cada nome de domínio precisa ser um nome de domínio totalmente qualificado, como myorg.example.com.

  11. Em Configuração de emissão de certificados, selecione o nome do recurso de configuração de emissão de certificados que faz referência ao pool de ACs de destino.

  12. Especifique um rótulo para associar ao certificado. É possível adicionar mais de um rótulo, se necessário. Para adicionar um rótulo, clique no botão Adicionar rótulo e especifique um key e um value para ele.

  13. Clique em Criar. Verifique se o novo certificado aparece na lista.

gcloud

Para um balanceador de carga de aplicativo externo global, um balanceador de carga de aplicativo clássico ou um balanceador de carga de rede de proxy externo global:

Execute este comando:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAMES" \
    --issuance-config=ISSUANCE_CONFIG_NAME

Substitua:

  • CERTIFICATE_NAME: um nome exclusivo do certificado.
  • DOMAIN_NAMES: uma lista separada por vírgulas dos domínios de destino para este certificado. Cada nome de domínio precisa ser um nome de domínio totalmente qualificado, como myorg.example.com.
  • ISSUANCE_CONFIG_NAME: o nome do recurso de configuração de emissão de certificado que faz referência ao pool de ACs de destino.

Para um balanceador de carga de aplicativo interno entre regiões:

Execute este comando:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAMES" \
    --issuance-config=ISSUANCE_CONFIG_NAME \
    --scope=all-regions

Substitua:

  • CERTIFICATE_NAME: um nome exclusivo do certificado.
  • DOMAIN_NAMES: uma lista separada por vírgulas dos domínios de destino para este certificado. Cada nome de domínio precisa ser um nome de domínio totalmente qualificado, como myorg.example.com.
  • ISSUANCE_CONFIG_NAME: o nome do recurso de configuração de emissão de certificado que faz referência ao pool de ACs de destino.

API

Crie o certificado fazendo uma solicitação POST ao método certificates.create da seguinte maneira:

Para um balanceador de carga de aplicativo externo global, um balanceador de carga de aplicativo clássico ou um balanceador de carga de rede de proxy externo global:

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME"
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "issuanceConfig": "ISSUANCE_CONFIG_NAME",
 }
}

Substitua:

  • PROJECT_ID: o ID do projeto de destino do Google Cloud.
  • CERTIFICATE_NAME: um nome exclusivo do certificado.
  • DOMAIN_NAME: o domínio de destino deste certificado . O nome de domínio precisa ser totalmente qualificado, como myorg.example.com.
  • ISSUANCE_CONFIG_NAME: o nome do recurso de configuração de emissão de certificado que faz referência ao pool de ACs de destino.

Para um balanceador de carga de aplicativo interno entre regiões:

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME"
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "issuanceConfig": "ISSUANCE_CONFIG_NAME",
  "scope": "ALL_REGIONS"
 }
}

Substitua:

  • PROJECT_ID: o ID do projeto de destino do Google Cloud.
  • CERTIFICATE_NAME: um nome exclusivo do certificado.
  • DOMAIN_NAME: o domínio de destino deste certificado . O nome de domínio precisa ser totalmente qualificado, como myorg.example.com.
  • ISSUANCE_CONFIG_NAME: o nome do recurso de configuração de emissão de certificado que faz referência ao pool de ACs de destino.

Para uma visão geral do processo de implantação do certificado, consulte Visão geral da implantação.

Verificar se o certificado está ativo

Use o comando a seguir para verificar se o próprio certificado está ativo antes de implantá-lo no balanceador de carga. Pode levar vários minutos para que o estado do certificado mude para ACTIVE.

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Substitua CERTIFICATE_NAME pelo nome do certificado de destino gerenciado pelo Google.

O comando retorna uma saída semelhante a esta:

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  domains:
  - myorg.example.com
  issuanceConfig: projects/myProject/locations/global/certificateIssuanceConfigs/myIssuanceConfig
  state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
- myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Implantar o certificado em um balanceador de carga

Nesta seção, apresentamos as etapas necessárias para implantar o certificado gerenciado pelo Google em um balanceador de carga.

Antes de continuar com as tarefas nesta seção, verifique se você concluiu as tarefas listadas nas seções Configurar a integração do CA Service com o Gerenciador de certificados e Criar um certificado gerenciado pelo Google emitido pela sua instância do CA Service.

Dependendo do tipo de balanceador de carga, é possível implantar certificados da seguinte maneira:

Implantar o certificado usando um mapa

Esta seção descreve as etapas para implantar um certificado usando um mapa de certificado.

Criar um CertificateMap

Crie um mapa de certificados que faça referência à entrada do mapa de certificados associada ao seu certificado:

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Substitua CERTIFICATE_MAP_NAME pelo nome do mapa de certificado de destino.

Criar uma entrada de mapa de certificado

Crie uma entrada do mapa de certificado e associe-a ao certificado e ao mapa de certificados:

gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAME" \
    --hostname="HOSTNAME"

Substitua:

  • CERTIFICATE_MAP_ENTRY_NAME: um nome exclusivo da entrada do mapa de certificado
  • CERTIFICATE_MAP_NAME: o nome do mapa de certificado a que essa entrada do mapa de certificado é anexada
  • CERTIFICATE_NAME: o nome do certificado que você quer associar a essa entrada do mapa de certificado
  • HOSTNAME: o nome do host que você quer associar a essa entrada do mapa de certificado

Verificar se a entrada do mapa de certificado está ativa

Use o comando a seguir para verificar se a entrada do mapa de certificados está ativa antes de anexar o mapa de certificado correspondente ao proxy de destino:

gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME"

Substitua:

  • CERTIFICATE_MAP_ENTRY_NAME: o nome da entrada do mapa do certificado de destino
  • CERTIFICATE_MAP_NAME: o nome do mapa de certificado a que essa entrada do mapa de certificado é anexada

O comando retorna uma saída semelhante a esta:

certificates:
createTime: '2021-09-06T10:01:56.229472109Z'
hostname: example.com
name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry
state: ACTIVE
updateTime: '2021-09-06T10:01:58.277031787Z'

Anexar o mapa de certificado ao proxy de destino

Anexe o mapa de certificado configurado ao proxy de destino:

  1. No Console do Google Cloud, acesse a página Proxies de destino.

    Acesse proxies de destino

  2. Anote o nome do proxy de destino.

  3. Anexe o mapa de certificado ao proxy de destino:

    gcloud compute target-https-proxies update PROXY_NAME \
       --certificate-map="CERTIFICATE_MAP_NAME"
    

    Substitua:

    • PROXY_NAME: o nome do proxy de destino.
    • CERTIFICATE_MAP_NAME: o nome do mapa de certificado que faz referência à entrada do mapa de certificado e o certificado associado

Se houver certificados TLS (SSL) existentes anexados diretamente ao proxy, ele dará preferência aos certificados referenciados pelo mapa de certificados em vez dos certificados TLS (SSL) anexados diretamente.

Anexar o certificado diretamente ao proxy de destino

Para anexar o certificado diretamente ao proxy, execute o seguinte comando:

gcloud compute target-https-proxies update PROXY_NAME \
    --url-map=URL_MAP \
    --global \
    --certificate-manager-certificates=CERTIFICATE_NAME

Substitua:

  • PROXY_NAME: um nome exclusivo do proxy.
  • URL_MAP: o nome do mapa de URL. Você criou o mapa de URL quando criou o balanceador de carga.
  • CERTIFICATE_NAME: o nome do certificado.

Solução de problemas

Para conferir as etapas de solução de problemas, consulte Problemas relacionados a certificados emitidos por uma instância de serviço de AC.

Limpar

Para reverter as alterações feitas neste tutorial, conclua as etapas a seguir:

  1. Remover o mapa de certificado do proxy.

    Antes de desanexar o mapa de certificado, observe o seguinte:

    • Se houver algum certificado TLS (SSL) anexado diretamente ao proxy, desanexar o mapa de certificado fará com que ele retome o uso desses certificados TLS (SSL) anexados diretamente.
    • Se não houver certificados TLS (SSL) anexados diretamente ao proxy, o mapa de certificados não poderá ser desanexado do proxy. Primeiro, anexe pelo menos um certificado TLS (SSL) diretamente ao proxy antes de remover o mapa de certificado.

    Para desanexar o mapa de certificado, execute o seguinte comando:

    gcloud compute target-https-proxies update PROXY_NAME \
       --clear-certificate-map
    

    Substitua PROXY_NAME pelo nome do proxy de destino.

  2. Exclua a entrada do mapa de certificado:

    gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \
       --map="CERTIFICATE_MAP_NAME"
    

    Substitua:

    • CERTIFICATE_MAP_ENTRY_NAME: o nome da entrada do mapa do certificado de destino
    • CERTIFICATE_MAP_NAME: o nome do mapa de certificados de destino.
  3. Exclua o mapa de certificado:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Substitua CERTIFICATE_MAP_NAME pelo nome do mapa de certificado de destino.

  4. Exclua o certificado gerenciado pelo Google:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Substitua CERTIFICATE_NAME pelo nome do certificado de destino.

  5. Exclua o recurso de configuração de emissão de certificados:

    gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
    

    Substitua ISSUANCE_CONFIG_NAME pelo nome do recurso de configuração de emissão de certificado de destino.

  6. Exclua o pool de ACs conforme descrito em Como excluir um pool de ACs.

    Lembre-se de que, para desativar a última AC ativada no pool de AC mencionado na configuração de emissão de certificados ou excluir o pool de AC referenciado, primeiro é necessário excluir todas as configurações de emissão de certificado que fazem referência a esse pool de AC.

A seguir