Solicitar um certificado usando Public CA e um cliente ACME

Neste tutorial, mostramos como solicitar um certificado TLS com o Public Certificate Authority usando a Google Cloud CLI. Para informações sobre as CAs raiz e intermediárias usadas pelo Public Certificate Authority, consulte Google Trust Services. Não há cobrança para solicitar certificados da CA pública.

Antes de começar

  • Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

    gcloud init

  • Crie ou selecione um projeto do Google Cloud.

    • Crie um projeto do Google Cloud:

      gcloud projects create PROJECT_ID

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

    • Selecione o projeto do 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 Proprietário (roles/owner) ou Criador de chave de conta externa de CA pública (publicca.externalAccountKeyCreator).

    Para conceder o papel Criador de chaves da conta externa da CA pública (publicca.externalAccountKeyCreator) do IAM, 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 informações sobre como conceder um papel do IAM, consulte Gerenciar o acesso a projetos, pastas e organizações.

  • Ative Public CA API:

    gcloud services enable publicca.googleapis.com

Instalar um cliente

Para começar a usar o Public CA, instale um cliente ACME. As instruções a seguir usam Certbot como o cliente ACME. Você pode usar qualquer outro cliente ACME se ele tiver suporte para vinculação de conta externa (EAB, na sigla em inglês).

Para instalar o Certbot, consulte as instruções do Certbot (em inglês).

Direcione seu cliente para o servidor do Public CA. Na primeira vez que o cliente ACME interage com o Public CA, 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 um HMAC

Depois de instalar um cliente ACME, é preciso registrar sua conta ACME no Public CA para solicitar certificados. Um secret EAB pode ajudar você a registrar sua conta ACME na CA pública. Um secret EAB consiste em um ID de chave e um código de autenticação de mensagens baseado em hash (HMAC, na sigla em inglês).

Use a API Public CA ou a Google Cloud CLI para solicitar um secret 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 secret EAB válido no ambiente de produção da CA pública. 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 do EAB no prazo de sete dias após o recebimento. Ele será invalidado se não for usado em até sete dias. A conta ACME registrada usando um secret do EAB não tem validade.

Registrar uma conta da ACME

Nesta seção, explicamos como registrar uma conta da ACME com o Public CA fornecendo o secret do 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 ao se registrar.

Para registrar uma conta ACME com o Public CA e vincular essa conta ao projeto do 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 preparo.
  • 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 preparo:

Ambiente Descrição URL do diretório ACME
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 teste retorna certificados que não são confiáveis publicamente. O ambiente de preparação executa as mesmas verificações de validação que o ambiente de produção. É possível usar o ambiente de preparação para a 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 secret do EAB. Depois de registrar uma conta ACME usando um secret do EAB, ele se tornará inválido e não poderá ser reutilizado. Se quiser registrar várias contas ACME, solicite um secret EAB exclusivo para cada uma delas.

Solicitar certificados

Depois que a CA pública valida seu controle do destino do certificado e confirma que o cliente ACME funciona conforme o esperado para executar operações de gerenciamento de certificados, é possível usar os fluxos de trabalho normais da 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 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 de preparo.
  • 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

Use o ambiente de preparação do Public CA para solicitar certificados para fins de teste. Os certificados emitidos pela cadeia do ambiente de preparo até uma CA raiz de teste. Os navegadores ou outros clientes que não foram configurados para confiar nesse certificado não serão considerados confiáveis pelos certificados do ambiente de teste. Para receber um secret do EAB válido no ambiente de preparação, modifique o endpoint de API para usar o endpoint do ambiente de preparo:

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

Exclua um projeto do Google Cloud:

gcloud projects delete PROJECT_ID

A seguir