Implantar um certificado autogerenciado global

Neste tutorial, mostramos como usar o Gerenciador de certificados para implantar um certificado autogerenciado global.

Os seguintes balanceadores de carga oferecem suporte a certificados autogerenciados globais:

  • Balanceador de carga de aplicativo externo global
  • Balanceador de carga de aplicativo clássico
  • Balanceador de carga de rede de proxy externo global
  • Balanceador de carga de rede de proxy clássico

Se você quiser implantar em balanceadores de carga regionais ou entre regiões, consulte o seguinte:

Objetivos

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

  • Fazer upload de um certificado autogerenciado para o Certificate Manager.
  • Implante o certificado em um balanceador de carga compatível usando um proxy HTTPS de destino.

Antes de começar

  1. Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, Certificate Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. Instale a Google Cloud CLI.

  6. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  7. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Compute Engine, Certificate Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  11. Instale a Google Cloud CLI.

  12. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  13. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Funções exigidas

Verifique se você tem as seguintes funções para concluir as tarefas neste tutorial:

  • Proprietário do Certificate Manager (roles/certificatemanager.owner)

    Necessário para criar e gerenciar recursos do Certificate Manager.

  • Administrador do balanceador de carga do Compute (roles/compute.loadBalancerAdmin) ou administrador de rede do Compute (roles/compute.networkAdmin)

    Necessário para criar e gerenciar o proxy HTTPS de destino.

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

Criar o balanceador de carga

Este tutorial pressupõe que você já criou e configurou os back-ends, as verificações de integridade, os serviços de back-end e os mapas de URL do balanceador de carga. Se você criou um balanceador de carga de aplicativo externo, anote o nome do mapa de URL, porque você vai precisar dele mais tarde neste tutorial.

Se você não criou o balanceador de carga, consulte as páginas a seguir para criar um:

Criar uma chave privada e um certificado

Para criar uma chave privada e um certificado, faça o seguinte:

  1. Use uma autoridade certificadora (AC) terceirizada confiável para emitir o certificado com a chave associada.

  2. Verifique se o certificado está encadeado e confiável na raiz.

  3. Prepare os seguintes arquivos codificados em PEM:

    • O arquivo de certificado (CRT)
    • O arquivo de chave privada correspondente (KEY)

Para informações sobre como solicitar e validar um certificado, consulte Criar uma chave privada e um certificado.

Fazer upload de um certificado autogerenciado para o Certificate Manager

Para fazer upload do certificado para o Gerenciador de certificados, faça o seguinte:

Console

  1. No Google Cloud console, acesse a página Certificate Manager.

    Acessar o Gerenciador de certificados

  2. Na guia Certificados, clique em Adicionar certificado.

  3. No campo Nome do certificado, insira um nome exclusivo para o certificado.

  4. Opcional: no campo Descrição, insira uma descrição para o certificado. A descrição permite identificar o certificado.

  5. Em Local, selecione Global.

  6. Em Escopo, selecione Padrão.

  7. Em Tipo de certificado, selecione Criar certificado autogerenciado.

  8. No campo Certificado, faça uma destas ações:

    • Clique no botão Upload e selecione o arquivo de certificado no formato PEM.
    • Copie e cole o conteúdo de um certificado no formato PEM. O conteúdo precisa começar com -----BEGIN CERTIFICATE----- e terminar com -----END CERTIFICATE-----.
  9. No campo Certificado de chave privada, faça uma destas ações:

    • Clique no botão Upload e selecione sua chave privada. Ela precisa estar no formato PEM e não ser protegida por uma senha longa.
    • Copie e cole o conteúdo de uma chave privada no formato PEM. As chaves privadas precisam começar com -----BEGIN PRIVATE KEY----- e terminar com -----END PRIVATE KEY-----.
  10. No campo Rótulos, especifique os rótulos a serem associados ao certificado. Para adicionar um rótulo, clique em Adicionar rótulo e especifique uma chave e um valor para o rótulo.

  11. Clique em Criar.

    O novo certificado aparece na lista de certificados.

gcloud

Para criar um certificado autogerenciado global, use o certificate-manager certificates create comando:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --certificate-file="CERTIFICATE_FILE" \
    --private-key-file="PRIVATE_KEY_FILE"

Substitua:

  • CERTIFICATE_NAME: o nome do certificado.
  • CERTIFICATE_FILE: o caminho e o nome do arquivo de certificado CRT.
  • PRIVATE_KEY_FILE: o caminho e o nome do arquivo de chave privada KEY.

Terraform

Para fazer upload de um certificado autogerenciado, use um google_certificate_manager_certificate recurso com o self_managed bloco.

API

Faça upload do certificado fazendo uma solicitação POST para o método certificates.create da seguinte maneira:

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME
{
  self_managed: {
    pem_certificate: "PEM_CERTIFICATE",
    pem_private_key: "PEM_KEY",
  }
}

Substitua:

  • PROJECT_ID: ID do Google Cloud projeto.
  • CERTIFICATE_NAME: o nome do certificado.
  • PEM_CERTIFICATE: o certificado PEM.
  • PEM_KEY: a chave PEM.

Implantar o certificado autogerenciado em um balanceador de carga

Para implantar o certificado autogerenciado global, use um mapa de certificados.

Criar um mapa de certificados

Crie um mapa de certificados que faça referência ao item no mapa de certificados associado ao seu certificado:

gcloud

Para criar um mapa de certificados, use o gcloud certificate-manager maps create comando:

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Substitua CERTIFICATE_MAP_NAME pelo nome do mapa de certificados de destino.

Terraform

Para criar um mapa de certificados, use um google_certificate_manager_certificate_map recurso.

resource "google_certificate_manager_certificate_map" "certificate_map" {
  name        = "${local.name}-certmap-${random_id.tf_prefix.hex}"
  description = "${local.domain} certificate map"
  labels = {
    "terraform" : true
  }
}

Criar um item no mapa de certificados

Crie um item no mapa de certificados e o associe ao seu certificado e ao mapa de certificados:

gcloud

Para criar um item no mapa de certificados, use o gcloud certificate-manager maps entries create comando:

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

Substitua:

  • CERTIFICATE_MAP_ENTRY_NAME: nome do item no mapa de certificados.
  • CERTIFICATE_MAP_NAME: nome do mapa de certificados ao qual o item no mapa de certificados está associado.
  • CERTIFICATE_NAME: o nome do certificado que você quer associar ao item no mapa de certificados.
  • HOSTNAME: nome do host que você quer associar ao item no mapa de certificados.

    Se você quiser criar um certificado que abranja um domínio curinga e um domínio raiz, especifique o nome do host com uma raiz e um curinga, como example.com e *.example.com. Além disso, você precisa especificar duas entradas de mapa de certificado: uma para example.com e outra para *.example.com.

Terraform

Para criar um item no mapa de certificados com um domínio raiz, use um google_certificate_manager_certificate_map_entry recurso.

resource "google_certificate_manager_certificate_map_entry" "first_entry" {
  name        = "${local.name}-first-entry-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.certificate_map.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.root_cert.id]
  hostname     = local.domain
}

Para criar um item no mapa de certificados com um domínio curinga, use um google_certificate_manager_certificate_map_entry recurso.

resource "google_certificate_manager_certificate_map_entry" "second_entry" {
  name        = "${local.name}-second-entity-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.certificate_map.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.root_cert.id]
  hostname     = "*.${local.domain}"
}

Verificar se o item no mapa de certificados está ativo

Verifique se o item no mapa de certificados está ativo antes de anexar o mapa de certificado correspondente ao proxy de destino.

Para verificar o item no mapa de certificados, use o gcloud certificate-manager maps entries describe comando:

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

Substitua:

  • CERTIFICATE_MAP_ENTRY_NAME: nome do item no mapa de certificados.
  • CERTIFICATE_NAME: o nome do certificado que você quer associar ao item no mapa de certificados.

O resultado será assim:

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 certificados ao proxy de destino

É possível anexar o mapa de certificados a um novo proxy de destino ou a um proxy de destino atual.

gcloud

Para anexar o mapa de certificados a um novo proxy de destino, use o gcloud compute target-https-proxies create comando:

gcloud compute target-https-proxies create PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --url-map="URL_MAP" \
    --global

Substitua:

  • PROXY_NAME: nome do proxy de destino.
  • CERTIFICATE_MAP_NAME: nome do mapa de certificados que faz referência ao item no mapa de certificados e ao certificado associado.
  • URL_MAP: o nome do mapa de URL.

Para anexar o mapa de certificados a um proxy HTTPS de destino atual, use o gcloud compute target-https-proxies update comando. Se você não souber o nome do proxy de destino atual, acesse a página Proxies de destino e anote o nome do proxy de destino.

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

Depois de criar ou atualizar o proxy de destino, execute o comando a seguir para verificá-lo:

gcloud compute target-https-proxies list

Terraform

Para anexar o mapa de certificados ao proxy de destino, use um google_compute_target_https_proxy recurso.

Ao configurar um proxy de destino, se você anexar certificados TLS (SSL) diretamente e também por um mapa de certificados, o proxy usará os certificados referenciados pelo mapa de certificados e ignorará os certificados TLS (SSL) anexados diretamente.

Limpar

Para evitar cobranças na sua Google Cloud conta pelos recursos usados neste tutorial, exclua-os.

  1. Exclua o balanceador de carga e os recursos dele.

    Consulte Limpar uma configuração de balanceamento de carga.

  2. Exclua ou desanexe o mapa de certificados do proxy.

    Para excluir o mapa de certificados, execute o seguinte comando:

    gcloud compute target-https-proxies delete PROXY_NAME
    

    Se você quiser manter o proxy HTTPS de destino, desanexe o mapa de certificados do proxy.

    • Se houver certificados TLS (SSL) anexados diretamente ao proxy, a desanexação do mapa de certificados fará com que o proxy volte a usar esses 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 desanexar o mapa de certificados.

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

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

    Substitua PROXY_NAME pelo nome do proxy de destino.

  3. Exclua o item no mapa de certificados do mapa de certificados:

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

    Substitua:

    • CERTIFICATE_MAP_ENTRY_NAME: nome do item no mapa de certificados.
    • CERTIFICATE_MAP_NAME: nome do mapa de certificados.
  4. Exclua o mapa de certificados:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Substitua CERTIFICATE_MAP_NAME pelo nome do mapa de certificados.

  5. Exclua o certificado enviado:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Substitua CERTIFICATE_NAME pelo nome do certificado.

A seguir