Demander un certificat à l'aide d'Public CA et d'un client ACME

Ce tutoriel explique comment demander un certificat TLS auprès de l'Public Certificate Authority à l'aide de la Google Cloud CLI. Pour en savoir plus sur les autorités de certification racine et intermédiaires utilisées par Public Certificate Authority, consultez la page Google Trust Services. La demande de certificats auprès d'une autorité de certification publique n'est pas facturée.

Avant de commencer

  • Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

    gcloud init

  • Créez ou sélectionnez un projet Google Cloud.

    • Créez un projet Google Cloud :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud.

  • Assurez-vous de disposer du rôle IAM Propriétaire (roles/owner) ou du rôle IAM Créateur de clé de compte externe d'autorité de certification publique (publicca.externalAccountKeyCreator).

    Pour accorder le rôle IAM Créateur de clés de compte externe d'autorité de certification publique (publicca.externalAccountKeyCreator), exécutez la commande suivante:

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

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • USER: identifiant unique de l'utilisateur auquel vous souhaitez attribuer le rôle IAM

    Pour en savoir plus sur l'attribution d'un rôle IAM, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

  • Activer Public CA API :

    gcloud services enable publicca.googleapis.com

Installer un client

Pour commencer à utiliser Public CA, vous devez installer un client ACME. Les instructions suivantes utilisent Certbot comme client ACME. Vous pouvez utiliser n'importe quel autre client ACME s'il est compatible avec la liaison de compte externe.

Pour installer Certbot, consultez les instructions de Certbot.

Veillez à faire pointer votre client vers le serveur de Public CA. La première fois que le client ACME interagit avec l'Public CA, il génère une nouvelle paire de clés et envoie la clé publique à l'autorité de certification publique.

Demander un ID de clé EAB et un code HMAC

Après avoir installé un client ACME, vous devez enregistrer votre compte ACME auprès d'Public CA pour demander des certificats à une autorité de certification publique. Un secret EAB peut vous aider à enregistrer votre compte ACME auprès d'une autorité de certification publique. Un secret EAB se compose d'un ID de clé et d'un code d'authentification de message basé sur le hachage (HMAC).

Vous pouvez utiliser l'API d'autorité de certification publique ou la Google Cloud CLI pour demander un secret EAB.

Pour demander un ID de clé EAB et un HMAC, exécutez la commande suivante:

gcloud publicca external-account-keys create

Cette commande renvoie un secret EAB valide dans l'environnement de production de l'autorité de certification publique. Dans le corps de la réponse, le champ keyId contient l'ID de clé EAB et le champ b64MacKey contient le HMAC EAB.

Vous devez utiliser un secret EAB dans les sept jours suivant son obtention. Le secret EAB est invalidé si vous ne l'utilisez pas dans les sept jours. Le compte ACME enregistré à l'aide d'un secret EAB n'a pas d'expiration.

Créer un compte ACME

Cette section explique comment enregistrer un compte ACME auprès d'Public CA en fournissant le secret EAB que vous venez d'obtenir.

Utilisez un client ACME standard pour enregistrer un compte ACME, et fournissez l'ID de clé EAB et le code HMAC lors de l'enregistrement.

Pour enregistrer un compte ACME auprès d'Public CA et le lier au projet Google Cloud que vous avez utilisé pour demander le secret EAB, exécutez la commande suivante:

certbot register \
    --email "EMAIL_ADDRESS" \
    --no-eff-email \
    --server "SERVER" \
    --eab-kid "EAB_KID" \
    --eab-hmac-key "EAB_HMAC_KEY"

Remplacez les éléments suivants :

  • EMAIL_ADDRESS : votre adresse e-mail.
  • SERVER: URL du répertoire ACME de l'environnement de production ou de préproduction
  • EAB_KID: ID de clé EAB
  • EAB_HMAC_KEY: clé HMAC EAB

Le tableau suivant fournit la description et l'URL du répertoire ACME pour les environnements de production et de préproduction:

Environnement Description URL du répertoire ACME
Production L'environnement de production vous permet d'obtenir des certificats reconnus publiquement. https://dv.acme-v02.api.pki.goog/directory
Préproduction L'environnement de préproduction renvoie des certificats qui ne sont pas approuvés publiquement. L'environnement de préproduction effectue les mêmes contrôles de validation que l'environnement de production. Vous pouvez utiliser l'environnement de préproduction pour l'intégration ou tout autre type de test. https://dv.acme-v02.test-api.pki.goog/directory

Vous ne pouvez enregistrer qu'un seul compte ACME avec un secret EAB. Une fois que vous avez enregistré un compte ACME à l'aide d'un secret EAB, le secret EAB devient non valide et vous ne pouvez plus le réutiliser. Si vous souhaitez enregistrer plusieurs comptes ACME, vous devez demander un code secret EAB unique pour chacun d'eux.

Demander des certificats

Une fois que l'autorité de certification publique a validé votre contrôle sur la cible du certificat et a confirmé que votre client ACME fonctionne comme prévu pour effectuer des opérations de gestion des certificats, vous pouvez utiliser les workflows ACME standards pour demander, renouveler et révoquer des certificats. Vous pouvez effectuer ces opérations à l'aide de votre client ACME. Pour demander et renouveler un certificat, vous devez relever un défi ACME, tel que la question d'authentification DNS manuelle.

Pour demander un certificat via la question d'authentification DNS manuelle, exécutez la commande suivante:

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

Remplacez les éléments suivants :

  • SERVER: URL du répertoire ACME de l'environnement de production ou de préproduction
  • DOMAINS: liste des domaines pour lesquels vous demandez des certificats, séparés par une virgule

Effectuer un nettoyage

Si vous n'avez plus besoin de certificats pour vos domaines, supprimez le projet que vous avez créé.

Préproduction

Vous pouvez utiliser l'environnement de préproduction de l'Public CA pour demander des certificats à des fins de test. Les certificats émis par l'environnement de préproduction sont transmis à une autorité de certification racine de test. Les certificats de l'environnement de préproduction ne seront pas approuvés par les navigateurs ni par les autres clients qui n'ont pas été configurés pour approuver le certificat racine de préproduction. Pour obtenir un secret EAB valide dans l'environnement de préproduction, remplacez le point de terminaison de l'API pour l'utiliser pour l'environnement de préproduction:

gcloud config set api_endpoint_overrides/publicca https://preprod-publicca.googleapis.com/
Exécutez ensuite la commande de création de clé de compte pour créer une clé de préproduction:
gcloud publicca external-account-keys create
Pour revenir au point de terminaison de l'environnement de production, exécutez la commande suivante:
gcloud config unset api_endpoint_overrides/publicca

Supprimez un projet Google Cloud :

gcloud projects delete PROJECT_ID

Étapes suivantes