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


Neste tutorial, orientamos você no processo de implantação de certificados usando um certificado gerenciado pelo Google com o Certificate Authority Service como exemplo.

Os balanceadores de carga a seguir são compatíveis com certificados gerenciados pelo Google com o 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 há uma política de emissão de certificados em vigor no pool de ACs de destino, o provisionamento de certificados pode 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 mudanças 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 seguindo as etapas deste tutorial não são confiáveis publicamente. Se você quiser emitir certificados publicamente confiáveis, siga as etapas de um dos seguintes tutoriais:

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

Mesmo que você esteja usando um pool de AC 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:

  • Criar um certificado gerenciado pelo Google com o CA Service usando o Gerenciador de certificados.
  • Implante 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 de certificados, consulte Visão geral da implantação.

Antes de começar

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  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. É necessário 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 do Google Cloud de destino.

    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 pool de ACs de destino da seguinte forma:

    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 AC 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 AC que você quer atribuir a esse recurso de configuração de emissão de certificados.
    • CERTIFICATE_LIFETIME: a vida útil do certificado em dias. Os valores válidos vão de 21 a 30 dias em 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%. Você precisa definir 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 as 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 que aparece, 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 ajuda a identificar um certificado específico mais tarde.

  6. Em Local, escolha Global.

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

    1. Padrão: escolha o padrão para o Balanceador de carga de aplicativo externo global, o Balanceador de carga de aplicativo clássico ou o 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 um valor delimitado por vírgulas lista dos domínios de destino. Além disso, cada nome de domínio deve ser um domínio nome de domínio, como myorg.example.com.

  11. Em Configuração de emissão de certificados, selecione o nome do certificado. recurso de configuração de emissão 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 o rótulo.

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

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 delimitada por vírgulas dos domínios de destino deste 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 certificados 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 certificados que faz referência ao pool de ACs de destino.

API

Crie o certificado fazendo uma solicitação POST ao certificates.create. da seguinte forma:

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 certificados 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 certificados que faz referência ao pool de ACs de destino.

Para uma visão geral do processo de implantação de certificados, 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 gerenciado pelo Google de destino.

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

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

Antes de prosseguir com as tarefas nesta seção, conclua 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 de serviço de CA.

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 certificados.

Criar um CertificateMap

Criar um mapa de certificados que vai fazer referência à entrada do mapa do certificado associadas 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 de mapa de certificado. e associá-lo ao seu certificado e seu 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 ao qual esta entrada do mapa de certificado está anexada
  • CERTIFICATE_NAME: o nome do certificado que você quer associar a esta entrada do mapa de certificado
  • HOSTNAME: o nome do host que você quer associar a essa entrada do mapa de certificados.

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 do destino. entrada do mapa de certificado
  • CERTIFICATE_MAP_NAME: o nome do mapa de certificado ao qual esta entrada do mapa de certificado está 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 certificados 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 ao certificado associado

Se houver certificados TLS (SSL) 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 mudanças feitas neste tutorial, siga estas etapas:

  1. Desconecte o mapa de certificados do proxy.

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

    • Se houver certificados TLS (SSL) anexados diretamente ao proxy, a remoção do mapa de certificados faz com que o proxy volte a usar esses certificados TLS (SSL) anexados diretamente.
    • Se não houvesse certificados TLS (SSL) anexados diretamente ao proxy, o mapa de e não pode ser desanexado do proxy. É necessário anexar pelo menos um certificado TLS (SSL) diretamente ao proxy antes de desativar o mapa de certificados.

    Para desconectar 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 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 de destino
    • CERTIFICATE_MAP_NAME: o nome do mapa de certificados de destino
  3. Exclua o mapa de certificados:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Substitua CERTIFICATE_MAP_NAME pelo nome do destino. mapa de certificados.

  4. Exclua o certificado gerenciado pelo Google:

    Console

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

      Acessar o Gerenciador de certificados

    2. Na guia Certificados, marque a caixa de seleção do certificado.

    3. Clique em Excluir.

    4. Na caixa de diálogo exibida, clique em Excluir para confirmar.

    gcloud

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Substitua CERTIFICATE_NAME pelo nome do destino. certificado.

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

    Console

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

      Acessar o Gerenciador de certificados

    2. Na guia Issuance Configs, marque a caixa de seleção do configuração de emissão.

    3. Clique em Excluir.

    4. Na caixa de diálogo exibida, clique em Excluir para confirmar.

    gcloud

     gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
     

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

  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 ACs mencionado no configuração de emissão de certificados do Google Cloud ou excluir completamente o pool de AC referenciado, é preciso exclua todas as configurações de emissão de certificado que fazem referência a esse pool de AC:

A seguir