Solicitar um certificado usando uma 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 CAs raiz e intermediárias usadas pela Public Certificate Authority, consulte Google Trust Services. Não há cobrança para solicitar certificados da Public CA.

Antes de começar

  • Instale a CLI do Google Cloud. 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 gcloud CLI com sua identidade federada.

  • Crie ou selecione um Google Cloud projeto.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.
    • Crie um projeto do Google Cloud :

      gcloud projects create PROJECT_ID

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

    • Selecione o projeto Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud .

  • Verifique se você tem o papel do IAM de criador de chave de conta externa 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: ID do projeto Google Cloud
    • USER: o identificador exclusivo do usuário a quem você quer atribuir o papel do IAM.

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

  • Ative a API Public CA:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. 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 o Certbot como cliente ACME. Você pode usar qualquer outro cliente ACME se ele for compatível com a vinculação de conta externa (EAB, na sigla em inglês).

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

Não se esqueça de direcionar 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 um HMAC

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

Use a Public CA API ou a Google Cloud CLI para solicitar um segredo de EAB.

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

gcloud publicca external-account-keys create

Esse comando retorna um segredo de 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.

Você precisa usar um secret da EAB em até sete dias após recebê-lo. O segredo EAB será invalidado se não for usado em até 7 dias. A conta do ACME registrada usando um secret de EAB não tem expiração.

Registrar uma conta da 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 comum para registrar uma conta e forneça o ID da chave EAB e o HMAC durante o registro.

Para registrar uma conta do ACME com a Public CA e vincular a conta do ACME ao projeto Google Cloud usado para solicitar o secret do 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 email
  • SERVER: o URL do diretório ACME para o ambiente de produção ou de teste.
  • 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 os ambientes de produção e de teste:

Ambiente Descrição URL do diretório da ACME
Production O ambiente de produção permite obter certificados confiáveis publicamente. https://dv.acme-v02.api.pki.goog/directory
Preparo O ambiente de teste retorna certificados que não são confiáveis publicamente. O ambiente de teste realiza as mesmas verificações de validação que o ambiente de produção. Você pode usar o ambiente de preparo 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, ele fica inválido e não pode ser reutilizado. Se você quiser registrar várias contas do ACME, peça 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 normais do ACME para solicitar, renovar e revogar certificados. É possível realizar essas operações usando seu cliente ACME. Para solicitar e renovar um certificado, você precisa concluir um desafio ACME, como o desafio manual de DNS.

Para usar o desafio manual de DNS e 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 de teste
  • DOMAINS: uma lista separada por vírgulas de domínios para os quais você está solicitando certificados

Limpar

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

Preparo

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

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 teste:
gcloud publicca external-account-keys create
Para reverter ao endpoint do ambiente de produção, execute o seguinte comando:
gcloud config unset api_endpoint_overrides/publicca

Excluir um projeto do Google Cloud :

gcloud projects delete PROJECT_ID

A seguir