Solicitar um certificado usando a AC pública e um cliente ACME

Neste tutorial, mostramos como solicitar um certificado TLS com a autoridade de certificação pública usando a CLI do Google Cloud. Para informações sobre as ACs raiz e intermediárias usadas pela autoridade certificadora pública, consulte Google Trust Services. Não há cobrança para solicitar certificados da AC pública.

Antes de começar

  • Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

  • Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  • Verifique se você tem o papel de IAM de proprietário (roles/owner) ou de criador de chave de conta externa de CA público (publicca.externalAccountKeyCreator).

    Para conceder o papel de IAM Criador de chave de conta externa da CA pública (publicca.externalAccountKeyCreator), 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 seu projeto do Google Cloud;
    • USER: o identificador exclusivo do usuário a quem você quer atribuir o papel do IAM.

    Para saber mais sobre a concessão de um papel do IAM, consulte Gerenciar o acesso a projetos, pastas e organizações.

  • Enable the Public CA API:

    gcloud services enable publicca.googleapis.com

Instalar um cliente

Para começar a usar a AC pública, instale um cliente ACME. As instruções a seguir usam o Certbot como cliente ACME. Você pode usar qualquer outro cliente ACME se ele tiver suporte para vinculação de conta externa (EAB).

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

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

Solicitar um ID de chave EAB e HMAC

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

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

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

gcloud publicca external-account-keys create

Esse comando retorna um secret EAB válido no ambiente de produção da AC pública. No corpo da resposta, o campo keyId contém o ID da chave EAB, e o campo b64MacKey contém a HMAC EAB.

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

Registrar uma conta do ACME

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

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

Para registrar uma conta do ACME com a CA pública e vincular a conta do ACME ao projeto do Google Cloud que você usou para solicitar o segredo da 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 pré-produção
  • EAB_KID: o ID da chave EAB
  • EAB_HMAC_KEY: a chave HMAC EAB.

A tabela a seguir mostra a descrição e o URL do diretório ACME para o ambiente de produção e de pré-produçã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 preparo retorna certificados que não são confiáveis publicamente. O ambiente de teste executa as mesmas verificações de validação do ambiente de produção. É possível 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 da ACME com um segredo de EAB. Depois de registrar uma conta do ACME usando um segredo de EAB, ele se torna inválido e não pode ser reutilizado. Se você quiser registrar várias contas da ACME, solicite um segredo de EAB exclusivo para cada uma delas.

Solicitar certificados

Depois que a AC pública 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 do ACME, como o desafio DNS manual.

Para usar o desafio 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 de pré-produção
  • DOMAINS: uma lista separada por vírgulas de domínios para os quais você está pedindo certificados

Limpar

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

Preparo

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

gcloud config set api_endpoint_overrides/publicca https://preprod-publicca.googleapis.com/
Em seguida, execute o comando de criação de chave de 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

Delete a Google Cloud project:

gcloud projects delete PROJECT_ID

A seguir