Solicitar um certificado usando Public CA e um cliente ACME
Neste tutorial, mostramos 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 o Google Trust Services. Não há cobrança para solicitar certificados do Public CA, mas as operações do ACME estão sujeitas às cotas de solicitação da AC pública.
Antes de começar
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud initCrie ou selecione um projeto do Google Cloud .
Papéis necessários para selecionar ou criar um projeto
- Selecionar um projeto: para selecionar um projeto, não é necessário ter um papel do IAM específico. É possível selecionar qualquer projeto em que você tenha um papel.
-
Criar um projeto: para criar um projeto, é preciso ter o papel de criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor 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_IDpelo nome do projeto do Google Cloud .
Verifique se você tem o papel do IAM de Criador de chaves de conta externa da CA pública (
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 do Google CloudUSER: 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.
Ative a API Public CA, se ainda não estiver ativada:
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão por meio do papel de proprietário (roles/owner). Caso contrário, é possível conseguir essa permissão por meio do papel de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.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 o Certbot como o cliente ACME. É possível 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.
Verifique se o cliente está apontando 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 HMAC
Depois de instalar um cliente ACME, registre sua conta ACME na Public CA para solicitar certificados dela. Uma chave secreta de EAB pode ajudar você a registrar sua conta do ACME na CA pública. Uma chave secreta 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 secret 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 uma chave secreta de EAB válida 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 uma chave secreta de EAB em até sete dias após recebê-la. A chave secreta de EAB será invalidada se você não a usar em até sete dias. A conta ACME registrada usando um secret EAB não tem validade.
Registrar uma conta ACME
Nesta seção, explicamos como registrar uma conta ACME na Public CA fornecendo o secret de EAB que você acabou de receber.
Use um cliente ACME comum 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 projeto do Google Cloud que você usou para solicitar o secret de 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 emailSERVER: o URL do diretório ACME para o ambiente de produção ou de preparo.EAB_KID: o ID da chave EABEAB_HMAC_KEY: a chave HMAC do EAB.
A tabela a seguir mostra a descrição e o URL do diretório ACME para o ambiente de produção e de preparo:
| Ambiente | Descrição | URL do diretório ACME |
|---|---|---|
| Production | O ambiente de produção permite que você receba certificados publicamente confiáveis. | https://dv.acme-v02.api.pki.goog/directory |
| Preparo | O ambiente de teste retorna certificados que não são publicamente confiáveis. O ambiente de preparo realiza as mesmas verificações de validação que o ambiente de produção. É possível usar o ambiente de teste 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 uma chave secreta de EAB. Depois de registrar uma conta ACME usando um secret EAB, ele se torna inválido e não pode ser reutilizado. Se você quiser registrar várias contas ACME, solicite um secret EAB exclusivo para cada uma delas.
Solicitar certificados
Depois que a Public CA validar seu controle do destino do certificado e confirmar que o cliente ACME funciona conforme o esperado para realizar operações de gerenciamento de certificados, use os fluxos de trabalho normais do ACME para solicitar, renovar e revogar certificados. É possível realizar essas operações usando o cliente ACME. Para solicitar e renovar um certificado, é preciso concluir um desafio ACME, como o desafio de DNS manual.
Se você usa registros DNS de autorização de autoridade certificadora (CAA, na sigla em inglês) para controlar
quais CAs podem emitir certificados para seu domínio, especifique pki.goog como
um emissor autorizado, por exemplo, 0 issue "pki.goog".
A Public CA também é compatível com extensões de registro CAA para URI de conta e
vinculação de método ACME, conforme definido em
RFC 8657, que permite
restringir a emissão de certificados a uma conta ACME específica usando o parâmetro accounturi
e a métodos de validação específicos usando o parâmetro
validationmethods.
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 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 que você criou.
Preparo
É possível usar o ambiente de preparo do Public CA para solicitar certificados para fins de teste. Os certificados emitidos pelo ambiente de preparo se conectam a uma CA raiz de teste. Os certificados do ambiente de preparo não serão considerados confiáveis por navegadores ou outros clientes que não tenham sido configurados para confiar no certificado raiz de preparo. Para obter um secret de EAB válido no ambiente de preparo, substitua o endpoint de API para usar o endpoint do ambiente de preparo:
gcloud config set api_endpoint_overrides/publicca https://preprod-publicca.googleapis.com/
gcloud publicca external-account-keys create
gcloud config unset api_endpoint_overrides/publicca
Exclua um projeto do Google Cloud :
gcloud projects delete PROJECT_ID