Implemente um certificado global gerido pela Google com o serviço de autoridade de certificação

Este tutorial mostra como usar o Gestor de certificados para implementar um certificado global gerido pela Google com o Certificate Authority Service.

Os seguintes equilibradores de carga globais suportam certificados geridos pela Google com o serviço de autoridade de certificação:

  • Balanceador de carga de aplicações externo global
  • Balanceador de carga de aplicações clássico
  • Balanceador de carga de rede de proxy externo global

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

Configure a integração do serviço de AC com o Gestor de certificados

Para integrar o serviço de AC com o gestor de certificados, siga estes passos:

  1. No Google Cloud projeto de destino, crie uma conta de serviço do Certificate Manager:

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

    Substitua PROJECT_ID pelo ID do projeto de destino Google Cloud .

    O comando devolve o nome da identidade do serviço criada. Veja o exemplo seguinte:

    service-520498234@gcp-sa-certificatemanager.iam.gserviceaccount.com
    
  2. Conceda à conta de serviço do Certificate Manager a função de requerente de certificado do serviço de AC (roles/privateca.certificateRequester) no conjunto de AC de destino:

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

    Substitua o seguinte:

    • CA_POOL: o ID do grupo de ACs de destino.
    • LOCATION: a localização Google Cloud alvo.
    • SERVICE_ACCOUNT: o nome completo da conta de serviço que criou no passo 1.
  3. Crie um recurso de configuração de emissão de certificados para o seu conjunto de ACs:

    Consola

    1. Na Google Cloud consola, aceda ao separador Configurações de emissão na página Certificate Manager.

      Aceda ao Gestor de certificados

    2. Clique em Criar. É apresentada a página Crie uma configuração de emissão de certificados.

    3. No campo Nome, introduza um nome exclusivo para a configuração de emissão do certificado.

    4. Opcional: no campo Descrição, introduza uma descrição para a configuração de emissão.

    5. Para Localização, selecione Global.

    6. Opcional: no campo Duração total, especifique a duração total do certificado emitido em dias. O valor tem de estar compreendido entre 21 e 30 dias (inclusive).

    7. Opcional: em Percentagem do período de tempo de rotação, especifique a percentagem do período de tempo do certificado quando o respetivo processo de renovação começa. Para encontrar o intervalo de valores válidos, consulte a secção Percentagem do período de rotação e duração.

    8. Opcional: na lista Algoritmo de chave, selecione o algoritmo de chave a usar quando gerar a chave privada.

    9. Na lista CA pool, selecione o nome do CA pool a atribuir a este recurso de configuração de emissão de certificados.

    10. No campo Etiquetas, especifique as etiquetas a associar ao certificado. Para adicionar uma etiqueta, clique em Adicionar etiqueta e especifique uma chave e um valor para a etiqueta.

    11. Clique em Criar.

    gcloud

    gcloud certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \
        --ca-pool=CA_POOL
    

    Substitua o seguinte:

    • ISSUANCE_CONFIG_NAME: o nome do recurso de configuração de emissão do certificado.
    • CA_POOL: o caminho e o nome completos do recurso CA pool que quer atribuir a este recurso de configuração de emissão de certificados.

    Para mais informações sobre os recursos de configuração da emissão de certificados, consulte o artigo Faça a gestão dos recursos de configuração da emissão de certificados.

Crie um certificado gerido pela Google emitido pela sua instância do serviço de AC

Para criar um certificado gerido pela Google emitido pela instância do serviço de AC, faça o seguinte:

Consola

  1. Na Google Cloud consola, aceda à página Gestor de certificados.

    Aceda ao Gestor de certificados

  2. No separador Certificados, clique em Adicionar certificado.

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

  4. Opcional: no campo Descrição, introduza uma descrição do certificado. A descrição permite-lhe identificar o certificado.

  5. Para Localização, selecione Global.

  6. Para Âmbito, selecione Predefinição.

  7. Para Tipo de certificado, selecione Criar certificado gerido pela Google.

  8. Para Tipo de autoridade de certificação, selecione Privado.

  9. No campo Nomes de domínios, especifique uma lista de nomes de domínios do certificado separados por vírgulas. Cada nome do domínio tem de ser um nome do domínio totalmente qualificado, como myorg.example.com.

  10. Para Selecionar uma 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 conjunto de AC de destino.

  11. No campo Etiquetas, especifique as etiquetas a associar ao certificado. Para adicionar uma etiqueta, clique em Adicionar etiqueta e especifique uma chave e um valor para a etiqueta.

  12. Clique em Criar.

    O novo certificado é apresentado na lista de certificados.

gcloud

Para criar um certificado global gerido pela Google com o Certificate Authority Service, use o comando certificate-manager certificates create com a flag issuance-config:

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

Substitua o seguinte:

  • CERTIFICATE_NAME: o nome do certificado.
  • DOMAIN_NAME: o nome do domínio de destino. O nome do domínio tem de ser um nome do domínio totalmente qualificado, como myorg.example.com.
  • ISSUANCE_CONFIG_NAME: o nome do recurso de configuração de emissão de certificados que faz referência ao conjunto de ACs de destino.

API

Crie o certificado fazendo um pedido POST ao método certificates.create da seguinte forma:

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

Substitua o seguinte:

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

Valide o estado do certificado

Antes de implementar um certificado num equilibrador de carga, verifique se está ativo. O estado do certificado pode demorar vários minutos a mudar para ACTIVE.

Consola

  1. Na Google Cloud consola, aceda à página Gestor de certificados.

    Aceda ao Gestor de certificados

  2. No separador Certificados, verifique a coluna Estado do certificado.

gcloud

Para verificar o estado do certificado, execute o seguinte comando:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Substitua CERTIFICATE_NAME pelo nome do certificado gerido pela Google de destino.

O resultado é semelhante ao seguinte:

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

Para ver mais passos de resolução de problemas, consulte o artigo Resolva problemas do Gestor de certificados.

Implemente o certificado num balanceador de carga

Para implementar o certificado global gerido pela Google, use um mapa de certificados.

Crie um mapa de certificados

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

gcloud

Para criar um mapeamento 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 certificados de destino.

Terraform

Para criar um mapa de certificados, pode usar 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
  }
}

Crie uma entrada de mapeamento de certificados

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

gcloud

Para criar uma entrada de mapeamento de certificados, 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 o seguinte:

  • CERTIFICATE_MAP_ENTRY_NAME: o nome da entrada do mapa de certificados.
  • CERTIFICATE_MAP_NAME: o nome do mapeamento de certificados ao qual a entrada do mapeamento de certificados está anexada.
  • CERTIFICATE_NAME: o nome do certificado que quer associar à entrada do mapa de certificados.
  • HOSTNAME: o nome do anfitrião que quer associar à entrada do mapa de certificados.

    Se quiser criar um certificado que abranja um domínio com caráter universal e um domínio raiz, especifique o nome do anfitrião com uma raiz e um caráter universal, como example.com e *.example.com. Além disso, tem de especificar duas entradas de mapeamento de certificados: uma para example.com e outra para *.example.com.

Terraform

Para criar uma entrada de mapa de certificados 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 mapeamento de certificados com um domínio de caráter universal, 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}"
}

Verifique se a entrada do mapeamento de certificados está ativa

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

Para validar 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 o seguinte:

  • CERTIFICATE_MAP_ENTRY_NAME: o nome da entrada do mapa de certificados.
  • CERTIFICATE_NAME: o nome do certificado que quer associar à entrada do mapa de certificados.

O resultado é semelhante ao seguinte:

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'

Associe o mapa de certificados ao proxy de destino

Pode anexar o mapa de certificados a um novo proxy de destino ou a um proxy de destino existente.

gcloud

Para anexar o mapeamento 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 o seguinte:

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

Para anexar o mapa de certificados a um proxy HTTPS de destino existente, use o comando gcloud compute target-https-proxies update. Se não souber o nome do proxy de destino existente, aceda à 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 seguinte comando para o verificar:

gcloud compute target-https-proxies list

Terraform

Para anexar o mapeamento de certificados ao proxy de destino, pode usar um recurso google_compute_target_https_proxy.

Quando configura um proxy de destino, se anexar certificados TLS (SSL) diretamente e também através de um mapa de certificados, o proxy usa os certificados referenciados pelo mapa de certificados e ignora os certificados TLS (SSL) anexados diretamente.

Resolução de problemas de certificados emitidos pelo serviço de AC

Para ver os passos de resolução de problemas, consulte o artigo Problemas relacionados com certificados emitidos por uma instância do serviço de AC.

Limpar

Para evitar incorrer em cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine-os.

  1. Elimine o balanceador de carga e os respetivos recursos.

    Consulte o artigo Limpe uma configuração de equilíbrio de carga.

  2. Elimine ou desassocie o mapa de certificados do proxy.

    Para eliminar o mapeamento de certificados, execute o seguinte comando:

    gcloud compute target-https-proxies delete PROXY_NAME
    

    Se quiser manter o proxy HTTPS de destino, desassocie o mapa de certificados do proxy.

    • Se existirem certificados TLS (SSL) anexados diretamente ao proxy, a desanexação do mapa de certificados faz com que o proxy retome a utilização desses certificados TLS (SSL) anexados diretamente.
    • Se não existirem certificados TLS (SSL) anexados diretamente ao proxy, não é possível separar o mapa de certificados do proxy. Primeiro, tem de anexar, pelo menos, um certificado TLS (SSL) diretamente ao proxy antes de poder desanexar o mapa de certificados.

    Para desassociar o mapeamento 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. Elimine a entrada do mapa de certificados do mapa de certificados:

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

    Substitua o seguinte:

    • CERTIFICATE_MAP_ENTRY_NAME: o nome da entrada do mapa de certificados.
    • CERTIFICATE_MAP_NAME: o nome do mapeamento de certificados.
  4. Elimine o mapeamento de certificados:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Substitua CERTIFICATE_MAP_NAME pelo nome do mapa de certificados.

  5. Elimine o certificado gerido pela Google:

    Consola

    1. Na Google Cloud consola, aceda à página Gestor de certificados.

      Aceda ao Gestor de certificados

    2. No separador Certificados, selecione a caixa de verificação do certificado.

    3. Clique em Eliminar.

    4. Na caixa de diálogo apresentada, clique em Eliminar para confirmar.

    gcloud

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Substitua CERTIFICATE_NAME pelo nome do certificado de destino.

  6. Elimine o recurso de configuração de emissão de certificados:

    Consola

    1. Na Google Cloud consola, aceda ao separador Configurações de emissão na página Certificate Manager.

      Aceda ao Gestor de certificados

    2. Selecione a caixa de verificação do recurso de configuração de emissão que quer eliminar.

    3. Clique em Eliminar.

    4. Na caixa de diálogo apresentada, clique em Eliminar para confirmar.

    gcloud

     gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
     

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

  7. Elimine o conjunto de CA.

    Para eliminar o conjunto de ACs ou desativar a última AC ativada num conjunto de ACs referenciado por um recurso de configuração de emissão de certificados, elimine todos os recursos de configuração de emissão de certificados que referenciam o conjunto de ACs. Para mais informações, consulte o artigo Elimine um conjunto de ACs.