Déployer un certificat mondial géré par Google avec Certificate Authority Service


Ce tutoriel vous explique le processus de déploiement de certificats à l'aide d'un certificat géré par Google avec Certificate Authority Service, par exemple.

Les équilibreurs de charge suivants sont compatibles avec les certificats gérés par Google avec le service CA:

  • Équilibreur de charge d'application externe global
  • Équilibreur de charge d'application classique
  • Équilibreur de charge d'application interne interrégional
  • Équilibreur de charge réseau proxy externe global

Si une stratégie d'émission de certificats est en vigueur sur le pool d'autorités de certification cible, le provisionnement des certificats peut échouer pour l'une des raisons suivantes:

  • La stratégie d'émission de certificats a bloqué le certificat demandé. Dans ce cas, vous n'êtes pas facturé puisque le certificat n'a pas été émis.
  • La règle a appliqué au certificat des modifications qui ne sont pas compatibles avec le gestionnaire de certificats. Dans ce cas, des frais vous sont quand même facturés depuis que le certificat a été émis, même s'il n'est pas entièrement compatible avec le gestionnaire de certificats.

Les certificats émis en suivant les étapes de ce tutoriel ne sont pas approuvés publiquement. Si vous souhaitez émettre des certificats approuvés publiquement, suivez plutôt les étapes décrites dans l'un des tutoriels suivants:

Si vous souhaitez migrer un certificat existant vers le gestionnaire de certificats, suivez plutôt la procédure décrite dans Migrer des certificats vers le gestionnaire de certificats.

Gardez à l'esprit que même si vous utilisez un pool d'autorités de certification régional pour émettre un certificat TLS géré par Google, le certificat lui-même est global et peut être utilisé dans n'importe quelle région.

Objectifs

Ce guide vous explique comment effectuer les tâches suivantes :

  • Créez un certificat géré par Google avec CA Service à l'aide du gestionnaire de certificats.
  • Déployez le certificat sur un équilibreur de charge compatible à l'aide d'un proxy HTTPS cible.

Pour en savoir plus sur le processus de déploiement de certificats, consultez la section Présentation du déploiement.

Avant de commencer

  1. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  2. Assurez-vous de disposer des rôles suivants pour effectuer les tâches de ce tutoriel:

    • Propriétaire du gestionnaire de certificats:nécessaire pour créer et gérer les ressources du gestionnaire de certificats.
    • Administrateur de l'équilibreur de charge Compute ou Administrateur de réseaux Compute:requis pour créer et gérer un proxy cible HTTPS.
    • Administrateur Certificate Authority Service:nécessaire pour effectuer des actions dans CA Service.

    Pour en savoir plus, consultez les ressources suivantes :

  3. Activez l'API CA Service.

  4. Créez un pool d'autorités de certification. Vous devez créer et activer au moins une autorité de certification dans ce pool d'autorités de certification.

Configurer l'intégration de CA Service au gestionnaire de certificats

Configurez le gestionnaire de certificats pour l'intégrer au service CA comme suit:

  1. Exécutez la commande suivante pour créer un compte de service de gestionnaire de certificats dans le projet Google Cloud cible:

    gcloud beta services identity create --service=certificatemanager.googleapis.com \
       --project=PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID du projet Google Cloud cible.

    La commande renvoie le nom de l'identité de service créée. Consultez l'exemple ci-dessous :

    service-520498234@gcp-sa-certificatemanager.iam.gserviceaccount.com
    
  2. Attribuez au compte de service du gestionnaire de certificats le rôle de demandeur de certificat dans le pool d'autorités de certification cible comme suit:

    gcloud privateca pools add-iam-policy-binding CA_POOL \
       --location REGION \
       --member "serviceAccount:SERVICE_ACCOUNT" \
       --role roles/privateca.certificateRequester
    

    Remplacez les éléments suivants :

    • CA_POOL: ID du pool d'autorités de certification cible.
    • REGION: région Google Cloud cible.
    • SERVICE_ACCOUNT: nom complet du compte de service que vous avez créé à l'étape 1.
  3. Créez une ressource de configuration d'émission de certificats pour votre pool d'autorités de certification:

    gcloud certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \
       --ca-pool=CA_POOL \
       [--lifetime=CERTIFICATE_LIFETIME] \
       [--rotation-window-percentage=ROTATION_WINDOW_PERCENTAGE] \
       [--key-algorithm=KEY_ALGORITHM]
    

    Remplacez les éléments suivants :

    • ISSUANCE_CONFIG_NAME: nom unique de la ressource de configuration d'émission de certificats.
    • CA_POOL: chemin d'accès complet à la ressource et nom du pool d'autorités de certification que vous souhaitez attribuer à cette ressource de configuration d'émission de certificats.
    • CERTIFICATE_LIFETIME: durée de vie du certificat, en jours. Les valeurs valides sont comprises entre 21 et 30 jours selon le format de durée standard. La valeur par défaut est de 30 jours (30D). Ce paramètre est facultatif.

    • ROTATION_WINDOW_PERCENTAGE: pourcentage de la durée de vie du certificat à partir duquel un renouvellement se déclenche. Ce paramètre est facultatif.

      La valeur par défaut est 66 %. Vous devez définir le pourcentage de la période de rotation par rapport à la durée de vie du certificat, de sorte que le renouvellement du certificat ait lieu au moins 7 jours après son émission et au moins 7 jours avant son expiration.

    • KEY_ALGORITHM: algorithme de chiffrement utilisé pour générer la clé privée. Les valeurs valides sont ecdsa-p256 ou rsa-2048. La valeur par défaut est rsa-2048. Ce paramètre est facultatif.

Pour en savoir plus sur les configurations d'émission de certificats, consultez Gérer les configurations d'émission de certificats.

Créer un certificat géré par Google et émis par votre instance CA Service

Créez un certificat géré par Google, émis par votre instance de CA Service, comme suit:

gcloud

Pour un équilibreur de charge d'application externe global, un équilibreur de charge d'application classique ou un équilibreur de charge réseau proxy externe global:

Exécutez la commande ci-dessous.

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAMES" \
    --issuance-config=ISSUANCE_CONFIG_NAME

Remplacez les éléments suivants :

  • CERTIFICATE_NAME: nom unique du certificat.
  • DOMAIN_NAMES: liste des domaines cibles de ce certificat, séparés par une virgule. Chaque nom de domaine doit être un nom de domaine complet, par exemple myorg.example.com.
  • ISSUANCE_CONFIG_NAME: nom de la ressource de configuration d'émission de certificats faisant référence au pool d'autorités de certification cible.

Pour un équilibreur de charge d'application interne interrégional :

Exécutez la commande ci-dessous.

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAMES" \
    --issuance-config=ISSUANCE_CONFIG_NAME \
    --scope=all-regions

Remplacez les éléments suivants :

  • CERTIFICATE_NAME: nom unique du certificat.
  • DOMAIN_NAMES: liste des domaines cibles de ce certificat, séparés par une virgule. Chaque nom de domaine doit être un nom de domaine complet, par exemple myorg.example.com.
  • ISSUANCE_CONFIG_NAME: nom de la ressource de configuration d'émission de certificats faisant référence au pool d'autorités de certification cible.

API

Créez le certificat en envoyant une requête POST à la méthode certificates.create comme suit:

Pour un équilibreur de charge d'application externe global, un équilibreur de charge d'application classique ou un équilibreur de charge réseau proxy externe global:

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME"
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "issuanceConfig": "ISSUANCE_CONFIG_NAME",
 }
}

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet Google Cloud cible.
  • CERTIFICATE_NAME: nom unique du certificat.
  • DOMAIN_NAME: domaine cible de ce certificat . Le nom de domaine doit être un nom de domaine complet (myorg.example.com, par exemple).
  • ISSUANCE_CONFIG_NAME: nom de la ressource de configuration d'émission de certificats faisant référence au pool d'autorités de certification cible.

Pour un équilibreur de charge d'application interne interrégional :

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME"
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "issuanceConfig": "ISSUANCE_CONFIG_NAME",
  "scope": "ALL_REGIONS"
 }
}

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet Google Cloud cible.
  • CERTIFICATE_NAME: nom unique du certificat.
  • DOMAIN_NAME: domaine cible de ce certificat . Le nom de domaine doit être un nom de domaine complet (myorg.example.com, par exemple).
  • ISSUANCE_CONFIG_NAME: nom de la ressource de configuration d'émission de certificats faisant référence au pool d'autorités de certification cible.

Pour en savoir plus sur le processus de déploiement de certificats, consultez la section Présentation du déploiement.

Vérifier que le certificat est actif

Utilisez la commande suivante pour vérifier que le certificat lui-même est actif avant de le déployer sur votre équilibreur de charge. Le passage de l'état du certificat à ACTIVE peut prendre plusieurs minutes.

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Remplacez CERTIFICATE_NAME par le nom du certificat géré par Google cible.

La commande renvoie un résultat semblable à celui-ci :

certificatePem: myPEM
createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  domains:
  - myorg.example.com
  issuanceConfig: projects/myProject/locations/global/certificateIssuanceConfigs/myIssuanceConfig
  state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
scope: myScope
sanDnsnames:
- myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Déployer le certificat sur un équilibreur de charge

Cette section décrit la procédure à suivre pour déployer le certificat géré par Google sur un équilibreur de charge.

Avant de poursuivre les tâches de cette section, assurez-vous d'avoir effectué les tâches indiquées dans les sections Configurer l'intégration du service CA avec le gestionnaire de certificats et Créer un certificat géré par Google émis par votre instance de service CA.

Selon le type d'équilibreur de charge, vous pouvez déployer des certificats comme suit:

Déployer le certificat à l'aide d'un mappage de certificats

Cette section décrit la procédure à suivre pour déployer un certificat à l'aide d'un mappage de certificats.

Créer un mappage de certificat

Créez un mappage de certificats qui référencera l'entrée de mappage de certificats associée à votre certificat:

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Remplacez CERTIFICATE_MAP_NAME par le nom du mappage de certificat cible.

Créer une entrée de mappage de certificat

Créez une entrée de mappage de certificat et associez-la à votre certificat ainsi qu'à votre mappage de certificats:

gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAME" \
    --hostname="HOSTNAME"

Remplacez les éléments suivants :

  • CERTIFICATE_MAP_ENTRY_NAME: nom unique de l'entrée de mappage de certificat
  • CERTIFICATE_MAP_NAME: nom du mappage de certificat auquel l'entrée de mappage de certificat est associée
  • CERTIFICATE_NAME: nom du certificat que vous souhaitez associer à cette entrée de mappage de certificats
  • HOSTNAME: nom d'hôte que vous souhaitez associer à cette entrée de mappage de certificat

Vérifier que l'entrée de mappage de certificat est active

Exécutez la commande suivante pour vérifier que l'entrée de mappage de certificat est active avant d'associer le mappage de certificat correspondant au proxy cible 

gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME"

Remplacez les éléments suivants :

  • CERTIFICATE_MAP_ENTRY_NAME: nom de l'entrée de mappage de certificats cible
  • CERTIFICATE_MAP_NAME: nom du mappage de certificat auquel l'entrée de mappage de certificat est associée

La commande renvoie un résultat semblable à celui-ci :

createTime: '2021-09-06T10:01:56.229472109Z'
name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry
state: ACTIVE
updateTime: '2021-09-06T10:01:58.277031787Z'

Associer le mappage de certificat au proxy cible

Associez le mappage de certificat configuré au proxy cible souhaité:

  1. Dans la console Google Cloud, accédez à la page Proxys cibles.

    Accéder aux proxys cibles

  2. Notez le nom du proxy cible.

  3. Associez le mappage de certificat au proxy cible:

    gcloud compute target-https-proxies update PROXY_NAME \
       --certificate-map="CERTIFICATE_MAP_NAME"
    

    Remplacez les éléments suivants :

    • PROXY_NAME: nom du proxy cible
    • CERTIFICATE_MAP_NAME: nom du mappage de certificat faisant référence à l'entrée de votre mappage de certificat et au certificat associé.

Si des certificats TLS (SSL) sont déjà associés directement au proxy, celui-ci donne la priorité aux certificats référencés par le mappage de certificats par rapport aux certificats TLS (SSL) directement associés.

Associer le certificat directement au proxy cible

Pour associer le certificat directement au proxy, exécutez la commande suivante:

gcloud compute target-https-proxies update PROXY_NAME \
    --url-map=URL_MAP \
    --global \
    --certificate-manager-certificates=CERTIFICATE_NAME

Remplacez les éléments suivants :

  • PROXY_NAME: nom unique du proxy.
  • URL_MAP : nom du mappage d'URL. Vous avez créé le mappage d'URL lors de la création de l'équilibreur de charge.
  • CERTIFICATE_NAME: nom du certificat.

Dépannage

Pour connaître les étapes de dépannage, consultez la page Problèmes liés aux certificats émis par une instance de CA Service.

Effectuer un nettoyage

Pour annuler les modifications effectuées dans ce tutoriel, procédez comme suit:

  1. Dissociez le mappage de certificat du proxy.

    Avant de dissocier le mappage de certificat, tenez compte des points suivants:

    • Si des certificats TLS (SSL) sont associés directement au proxy, la dissociation du mappage de certificat entraîne la réactivation du proxy pour l'utilisation de ces certificats TLS (SSL) directement associés.
    • Si aucun certificat TLS (SSL) n'est associé directement au proxy, le mappage de certificat ne peut pas être dissocié du proxy. Vous devez d'abord associer au moins un certificat TLS (SSL) directement au proxy avant de pouvoir dissocier le mappage de certificats.

    Pour dissocier le mappage de certificats, exécutez la commande suivante:

    gcloud compute target-https-proxies update PROXY_NAME \
       --clear-certificate-map
    

    Remplacez PROXY_NAME par le nom du proxy cible.

  2. Supprimez l'entrée de mappage de certificats du mappage de certificats:

    gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \
       --map="CERTIFICATE_MAP_NAME"
    

    Remplacez les éléments suivants :

    • CERTIFICATE_MAP_ENTRY_NAME: nom de l'entrée de mappage du certificat cible
    • CERTIFICATE_MAP_NAME: nom du mappage de certificat cible
  3. Supprimez le mappage de certificat:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Remplacez CERTIFICATE_MAP_NAME par le nom du mappage de certificats cible.

  4. Supprimez le certificat géré par Google:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Remplacez CERTIFICATE_NAME par le nom du certificat cible.

  5. Supprimez la ressource de configuration d'émission de certificats:

    gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
    

    Remplacez ISSUANCE_CONFIG_NAME par le nom de la ressource de configuration d'émission de certificats cible.

  6. Supprimez le pool d'autorités de certification comme décrit dans Supprimer un pool d'autorités de certification.

    N'oubliez pas que pour désactiver la dernière autorité de certification activée dans le pool d'autorités de certification référencé dans la configuration d'émission de certificats ou pour supprimer complètement le pool d'autorités de certification référencé, vous devez d'abord supprimer chaque configuration d'émission de certificats qui référence ce pool d'autorités de certification.

Étapes suivantes