Solicitar um certificado usando a Public CA e um cliente ACME

Este tutorial mostra como solicitar um certificado TLS com a Public Certificate Authority usando a Google Cloud CLI. Para informações sobre as ACs raiz e intermediárias usadas pela Public Certificate Authority, consulte Google Trust Services. Não há custo para solicitar certificados da Public CA.

Antes de começar

  • Instale a Google Cloud CLI. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:

    gcloud init

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

  • Crie ou selecione um Google Cloud projeto.

    Papéis necessários para selecionar ou criar um projeto

    • Selecionar um projeto: a seleção de um projeto não exige um papel específico do IAM. É possível selecionar qualquer projeto em que você tenha recebido um papel.
    • Criar um projeto: para criar um projeto, você precisa do papel de criador de projetos (roles/resourcemanager.projectCreator), que contém a resourcemanager.projects.create permissão. Saiba como conceder papéis.
    • Crie um Google Cloud projeto do:

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o Google Cloud projeto do que você está criando.

    • Selecione o Google Cloud projeto do que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do Google Cloud projeto do.

  • Verifique se você tem o papel do IAM de criador de chaves de contas externas da Public CA (roles/publicca.externalAccountKeyCreator).

    Para conceder esse papel, execute o seguinte comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:USER \
      --role=roles/publicca.externalAccountKeyCreator
    

    Substitua:

    • PROJECT_ID: o ID do projeto do Google Cloud
    • USER: o identificador exclusivo do usuário a quem você quer atribuir o papel do IAM

    Para informações sobre como conceder um papel do IAM, consulte Gerenciar o acesso a projetos, pastas e organizações.

  • Ative a API do Public CA:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter a permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de proprietário (roles/owner). Caso contrário, você pode receber essa permissão pelo papel de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    gcloud services enable publicca.googleapis.com

Instalar um cliente

Para começar a usar a Public CA, instale um cliente ACME. As instruções a seguir usam Certbot como cliente ACME. Você pode usar qualquer outro cliente ACME se ele oferecer suporte à vinculação de contas externas (EAB).

Para instalar o Certbot, consulte as instruções do Certbot.

Direcione o cliente para o servidor da Public CA. Na primeira vez que o cliente ACME interage com a Public CA, ele gera um novo par de chaves e envia a chave pública para a Public CA.

Solicitar um ID de chave EAB e HMAC

Depois de instalar um cliente ACME, registre sua conta ACME com a Public CA para solicitar certificados da Public CA. Um segredo EAB pode ajudar você a registrar sua conta ACME com a Public CA. Um segredo EAB consiste em um ID de chave e um código de autenticação de mensagem baseado em hash (HMAC).

É possível usar a Public CA API ou a Google Cloud CLI para solicitar um segredo EAB.

Para solicitar um ID de chave EAB e HMAC, execute o seguinte comando:

gcloud publicca external-account-keys create

Esse comando retorna um segredo EAB válido no ambiente de produção da Public CA. No corpo da resposta, o campo keyId contém o ID da chave EAB e o campo b64MacKey contém o HMAC EAB.

Use um segredo EAB em até sete dias após recebê-lo. O segredo EAB será invalidado se você não o usar dentro de sete dias. A conta ACME registrada usando um segredo EAB não tem validade.

Registrar uma conta ACME

Esta seção explica como registrar uma conta ACME com a Public CA fornecendo o segredo EAB que você acabou de receber.

Use um cliente ACME normal para registrar uma conta ACME e forneça o ID da chave EAB e o HMAC durante o registro.

Para registrar uma conta ACME com a Public CA e vincular a conta ACME ao Google Cloud projeto do que você usou para solicitar o segredo EAB, execute o seguinte comando:

certbot register \
    --email "EMAIL_ADDRESS" \
    --no-eff-email \
    --server "SERVER" \
    --eab-kid "EAB_KID" \
    --eab-hmac-key "EAB_HMAC_KEY"

Substitua:

  • EMAIL_ADDRESS: seu endereço de e-mail
  • SERVER: o URL do diretório ACME para o ambiente de produção ou preparação
  • EAB_KID: o ID da chave EAB
  • EAB_HMAC_KEY: a chave HMAC EAB

A tabela a seguir fornece a descrição e o URL do diretório ACME para o ambiente de produção e preparação:

Ambiente Descrição URL do diretório ACME
Produção O ambiente de produção permite que você receba certificados confiáveis publicamente. https://dv.acme-v02.api.pki.goog/directory
Preparo O ambiente de preparação retorna certificados que não são confiáveis publicamente. O ambiente de preparação realiza as mesmas verificações de validação que o ambiente de produção É possível usar o ambiente de preparação para integração ou qualquer outro tipo de teste. https://dv.acme-v02.test-api.pki.goog/directory

Só é possível registrar uma conta ACME com um segredo EAB. Depois de registrar uma conta ACME usando um segredo EAB, o segredo EAB se torna inválido e não pode ser reutilizado. Se você quiser registrar várias contas ACME, solicite um segredo EAB exclusivo para cada uma delas.

Solicitar certificados

Depois que a Public CA validar seu controle do destino do certificado e reconhecer que o cliente ACME funciona conforme o esperado para realizar operações de gerenciamento de certificados, você poderá usar os fluxos de trabalho ACME normais para solicitar, renovar e revogar certificados. É possível realizar essas operações usando o cliente ACME. Para solicitar e renovar um certificado, é necessário concluir um desafio ACME, como o desafio de DNS manual.

Para usar o desafio de DNS manual para solicitar um certificado, execute o seguinte comando:

certbot certonly \
    --manual \
    --preferred-challenges "dns-01" \
    --server "SERVER" \
    --domains "DOMAINS"

Substitua:

  • SERVER: o URL do diretório ACME para o ambiente de produção ou preparação
  • DOMAINS: uma lista separada por vírgulas de domínios para os quais você está solicitando certificados

Limpar

Google Cloud

Se você não precisar mais de certificados para seus domínios, exclua o projeto do que você criou.

Preparo

É possível usar o ambiente de preparação da Public CA para solicitar certificados para fins de teste. Os certificados emitidos pela cadeia de ambiente de preparação até uma AC raiz de teste. Os certificados do ambiente de preparação não serão confiáveis por navegadores ou outros clientes que não foram configurados para confiar no certificado raiz de preparação. Para obter um Secret EAB válido no ambiente de preparação, substitua o endpoint de API para usar o endpoint do ambiente de preparação:

gcloud config set api_endpoint_overrides/publicca https://preprod-publicca.googleapis.com/
Em seguida, execute o comando de criação de chave da conta para criar uma chave de preparação:
gcloud publicca external-account-keys create
Para reverter para o endpoint do ambiente de produção, execute o seguinte comando:
gcloud config unset api_endpoint_overrides/publicca

Excluir um Google Cloud projeto do:

gcloud projects delete PROJECT_ID

A seguir