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 são compatíveis com 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 fazer a implantação em balanceadores de carga regionais ou entre regiões, consulte o seguinte:

Fazer upload de um certificado autogerenciado para o Gerenciador de certificados

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

Console

  1. No console do Google Cloud , 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 das seguintes ações:

    • Clique no botão Fazer 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 das seguintes 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.

gcloud

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

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 da chave privada KEY.

Terraform

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

API

Faça o 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: o ID do projeto Google Cloud .
  • CERTIFICATE_NAME: o nome do certificado.
  • PEM_CERTIFICATE: o PEM do certificado.
  • PEM_KEY: o PEM da chave.

Implantar o certificado autogerenciado em um balanceador de carga

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

Criar um CertificateMap

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

gcloud

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

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Substitua CERTIFICATE_MAP_NAME pelo nome do mapa de certificado de destino.

Terraform

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

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 uma entrada de mapa de certificado

Crie uma entrada de mapa de certificado e a associe ao seu certificado e mapa de certificado:

gcloud

Para criar uma entrada de mapa de certificado, use o comando gcloud certificate-manager maps entries create:

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

Substitua:

  • CERTIFICATE_MAP_ENTRY_NAME: o nome da entrada do mapa de certificados.
  • CERTIFICATE_MAP_NAME: o nome do mapa de certificados a que a entrada do mapa de certificados está anexada.
  • CERTIFICATE_NAME: o nome do certificado que você quer associar à entrada do mapa de certificados.
  • HOSTNAME: o nome do host que você quer associar à entrada do 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 caractere curinga, como example.com e *.example.com. Além disso, especifique duas entradas de mapa de certificado: uma para example.com e outra para *.example.com.

Terraform

Para criar uma entrada de mapa de certificado com um domínio raiz, use um recurso google_certificate_manager_certificate_map_entry.

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 uma entrada de mapa de certificados com um domínio curinga, use um recurso google_certificate_manager_certificate_map_entry.

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 a entrada do mapa de certificados está ativa

Verifique se a entrada do mapa de certificados está ativa antes de anexar o mapa de certificados correspondente ao proxy de destino.

Para verificar a entrada do mapa de certificados, use o comando gcloud certificate-manager maps entries describe:

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 de certificados.
  • CERTIFICATE_NAME: o nome do certificado que você quer associar à entrada do 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'

Anexe o mapa de certificado ao proxy de destino

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

gcloud

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

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

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 ao certificado associado.
  • URL_MAP: o nome do mapa de URL.

Para anexar o mapa de certificados a um proxy HTTPS de destino, use o comando gcloud compute target-https-proxies update. 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.

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 verificar:

gcloud compute target-https-proxies list

Terraform

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

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 e ignorará os certificados TLS (SSL) anexados diretamente.

Limpar

Para evitar cobranças na sua conta do Google Cloud 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, desvincule o mapa de certificados do proxy.

    • Se houver certificados TLS (SSL) anexados diretamente ao proxy, a remoçã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 dele. Primeiro, anexe pelo menos um certificado TLS (SSL) diretamente ao proxy antes de desconectar o mapa de certificados.

    Para desconectar 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 a entrada do mapa de certificados:

    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 de certificados.
    • CERTIFICATE_MAP_NAME: o 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 certificado.

  5. Exclua o certificado enviado:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Substitua CERTIFICATE_NAME pelo nome do certificado.