Peça um certificado através de uma AC pública e um cliente ACME

Este tutorial explica como pedir um certificado TLS com a autoridade de certificação pública através da CLI do Google Cloud. Para informações sobre as ACs raiz e intermédias usadas pela Autoridade de certificação pública, consulte os Serviços de confiança da Google. Não existe qualquer custo para pedir certificados à AC pública.

Antes de começar

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

    gcloud init

    Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

  • Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • 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.

  • Certifique-se de que tem a função do IAM de criador da chave da conta externa da AC pública (roles/publicca.externalAccountKeyCreator).

    Para conceder esta função, execute o seguinte comando:

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

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu Google Cloud projeto
    • USER: o identificador exclusivo do utilizador ao qual quer atribuir a função de IAM

    Para ver informações sobre como conceder uma função de IAM, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

  • Enable the Public CA API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable publicca.googleapis.com

Instale um cliente

Para começar a usar a CA pública, tem de instalar um cliente ACME. As instruções seguintes usam o Certbot como cliente ACME. Pode usar qualquer outro cliente ACME se o cliente suportar a vinculação de conta externa (EAB).

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

Certifique-se de que direciona o seu cliente para o servidor de AC público. A primeira vez que o cliente ACME interage com a CA pública, o cliente gera um novo par de chaves e envia a chave pública para a CA pública.

Peça um ID da chave de EAB e um HMAC

Depois de instalar um cliente ACME, tem de registar a sua conta ACME na CA pública para pedir certificados à CA pública. Um segredo EAB pode ajudar a registar a sua conta ACME junto da AC pública. Um segredo de EAB consiste num ID da chave e num código de autenticação de mensagens (HMAC) baseado em hash.

Pode usar a API de CA pública ou a CLI do Google Cloud para pedir um segredo de EAB.

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

gcloud publicca external-account-keys create

Este comando devolve um segredo 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 de EAB e o campo b64MacKey contém o HMAC de EAB.

Tem de usar um segredo da EAB no prazo de 7 dias após a obtenção. O segredo da EAB é invalidado se não o usar no prazo de 7 dias. A conta ACME registada através de um segredo EAB não tem validade.

Registe uma conta ACME

Esta secção explica como registar uma conta ACME com a CA pública fornecendo o segredo EAB que acabou de obter.

Use um cliente ACME normal para registar uma conta ACME e faculte o ID da chave EAB e a chave HMAC durante o registo.

Para registar uma conta ACME com uma AC pública e associar a conta ACME ao Google Cloud projeto que usou para pedir 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 o seguinte:

  • EMAIL_ADDRESS: o 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 de EAB
  • EAB_HMAC_KEY: a chave HMAC de EAB

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

Ambiente Descrição URL do diretório ACME
Produção O ambiente de produção permite-lhe obter certificados publicamente fidedignos. https://dv.acme-v02.api.pki.goog/directory
A testar O ambiente de preparação devolve certificados que não são publicamente fidedignos. O ambiente de preparação realiza as mesmas verificações de validação que o ambiente de produção. Pode 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ó pode registar uma conta ACME com um segredo EAB. Depois de registar uma conta ACME através de um segredo EAB, o segredo EAB torna-se inválido e não o pode reutilizar. Se quiser registar várias contas ACME, tem de pedir um segredo EAB exclusivo para cada uma das contas.

Peça certificados

Depois de a AC pública validar o seu controlo do destino do certificado e confirmar que o seu cliente ACME funciona como esperado para realizar operações de gestão de certificados, pode usar os fluxos de trabalho ACME normais para pedir, renovar e revogar certificados. Pode realizar estas operações através do seu cliente ACME. Para pedir e renovar um certificado, tem de concluir um desafio ACME, como o desafio de DNS manual.

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

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

Substitua o seguinte:

  • SERVER: o URL do diretório ACME para o ambiente de produção ou teste
  • DOMAINS: uma lista de domínios separados por vírgulas para os quais está a pedir certificados

Limpar

Se já não precisar de certificados para os seus domínios, elimine o projeto que criou.

A testar

Pode usar o ambiente de preparação da CA pública para pedir certificados para fins de teste. Os certificados emitidos pela cadeia do ambiente de preparação são encadeados até uma AC de raiz de teste. Os certificados do ambiente de preparação não são considerados fidedignos pelos navegadores nem por outros clientes que não tenham sido configurados para considerar fidedigno o certificado de raiz de preparação. Para obter um segredo EAB válido no ambiente de preparação, substitua o ponto final da API para usar o ponto final 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 da chave da conta para criar uma chave de preparação:
gcloud publicca external-account-keys create
Para reverter para o ponto final 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

O que se segue?