Configurer le protocole TLS mutuel avec une autorité de certification privée

Cette page explique comment créer une autorité de certification privée à l'aide du service d'autorité de certification et importer vos certificats dans une ressource TrustConfig du gestionnaire de certificats.

Vous allez également créer les ressources de sécurité réseau requises pour configurer le protocole TLS mutuel pour les équilibreurs de charge d'application.

Avant de commencer

Autorisations

Pour obtenir les autorisations nécessaires pour suivre ce guide, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

  • Pour créer des ressources d'équilibreur de charge telles que TargetHTTPProxy : Administrateur de l'équilibreur de charge Compute (roles/compute.loadBalancerAdmin)
  • Pour utiliser les ressources du gestionnaire de certificats : Propriétaire du gestionnaire de certificats (roles/certificatemanager.owner)
  • Pour créer des composants de sécurité et de mise en réseau, procédez comme suit : Administrateur de réseau Compute (roles/compute.networkAdmin) et Administrateur de sécurité Compute (roles/compute.securityAdmin)
  • Pour créer un projet (facultatif) : Créateur de projet (roles/resourcemanager.projectCreator)

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Créer une autorité de certification privée

Créez une autorité de certification privée à l'aide du service CA, puis créez un certificat racine :

  1. Pour créer un pool d'autorités de certification, exécutez la commande gcloud privateca pools create :

    gcloud privateca pools create CA_POOL \
       --location=us-central1
    

    Remplacez CA_POOL par l'ID ou le nom du pool d'autorités de certification parente.

  2. Pour créer une autorité de certification privée dans le pool d'autorités de certification, exécutez la commande gcloud privateca roots create :

    gcloud privateca roots create CA_ROOT \
       --pool=CA_POOL \
       --subject="CN=my-ca, O=Test LLC" \
       --location=us-central1
    

    Remplacez les éléments suivants :

    • CA_ROOT : ID ou nom de l'autorité de certification privée
    • CA_POOL : ID ou nom du pool d'autorités de certification parent
  3. Pour décrire la nouvelle autorité de certification et créer le fichier root.cert, utilisez la commande gcloud privateca roots describe :

    gcloud privateca roots describe CA_ROOT \
       --pool=CA_POOL \
       --location=us-central1 \
       --format='value(pemCaCertificates)' > root.cert
    
    export ROOT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
    

    Remplacez les éléments suivants :

    • CA_ROOT : ID ou nom de l'autorité de certification privée
    • CA_POOL : ID ou nom du pool d'autorités de certification parent

    Pour en savoir plus, consultez les ressources suivantes :

Créer une TrustConfig avec une autorité de certification privée

Créez une ressource TrustConfig de gestionnaire de certificats qui représente votre PKI à l'aide du certificat racine généré par l'autorité de certification privée. Nous partons du principe que la ressource TrustConfig est un simple magasin de confiance avec une seule ancre de confiance qui représente un certificat racine.

Dans les étapes suivantes, remplacez TRUST_CONFIG_NAME par le nom de la ressource TrustConfig.

  • Pour créer le fichier trust_config.yaml, exécutez la commande suivante :

    cat << EOF > trust_config.yaml
    name: TRUST_CONFIG_NAME
    trustStores:
    - trustAnchors:
       - pemCertificate: "${ROOT?}"
    EOF
    
  • Pour créer les ressources TrustConfig du gestionnaire de certificats, utilisez la commande gcloud certificate-manager trust-configs import :

    gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME  \
       --source=trust_config.yaml \
       --location=REGION
    

    Remplacez les éléments suivants :

    REGION : utilisez global pour l'équilibreur de charge d'application interne interrégional, l'équilibreur de charge d'application externe global ou l'équilibreur de charge d'application classique. Pour l'équilibreur de charge d'application externe régional ou l'équilibreur de charge d'application interne régional, utilisez la région dans laquelle vous avez configuré l'équilibreur de charge.

Créer les ressources de sécurité réseau

Une règle TLS de serveur (ressource de sécurité réseau ServerTLSPolicy) vous permet de spécifier le mode TLS côté serveur et la ressource TrustConfig à utiliser lors de la validation des certificats clients. Lorsque le client présente un certificat non valide ou aucun certificat à l'équilibreur de charge, clientValidationMode spécifie la manière dont la connexion client est gérée.

  • Lorsque clientValidationMode est défini sur ALLOW_INVALID_OR_MISSING_CLIENT_CERT, toutes les requêtes sont transmises au backend même si la validation échoue ou si le certificat client est manquant.
  • Lorsque clientValidationMode est défini sur REJECT_INVALID, seules les requêtes fournissant un certificat client pouvant être validé sur une ressource TrustConfig sont transmises au backend.

Pour créer la ressource ServerTLSPolicy, procédez comme suit :

  1. Selon la manière dont vous souhaitez gérer la connexion, sélectionnez l'une des options suivantes.

    Dans les étapes suivantes, remplacez SERVER_TLS_POLICY_NAME par le nom de la règle TLS du serveur et PROJECT_ID par l'ID de votre projet Google Cloud.

    • Option 1 : clientValidationMode est défini sur ALLOW_INVALID_OR_MISSING_CLIENT_CERT.

      Pour créer le fichier server_tls_policy.yaml, exécutez la commande suivante :

      global

      Pour les équilibreurs de charge d'application externes et les équilibreurs de charge d'application internes interrégionaux, utilisez la commande suivante :

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
        clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
        clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME
      EOF
      

      régional

      Pour les équilibreurs de charge d'application externes régionaux et les équilibreurs de charge d'application internes régionaux, utilisez la commande suivante :

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
        clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
        clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME
      EOF
      
    • Option 2 : clientValidationMode est défini sur REJECT_INVALID.

      Pour créer le fichier server_tls_policy.yaml, exécutez la commande suivante :

      global

      Pour les équilibreurs de charge d'application externes et les équilibreurs de charge d'application internes interrégionaux, utilisez la commande suivante :

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
        clientValidationMode: REJECT_INVALID
        clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME
      EOF
      

      régional

      Pour les équilibreurs de charge d'application externes régionaux et les équilibreurs de charge d'application internes régionaux, utilisez la commande suivante :

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
        clientValidationMode: REJECT_INVALID
        clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME
      EOF
      
  2. Pour créer la ressource ServerTlsPolicy, utilisez la commande gcloud network-security server-tls-policies import.

    global

    Pour les équilibreurs de charge d'application externes et les équilibreurs de charge d'application internes interrégionaux, utilisez la commande suivante :

    gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \
      --source=server_tls_policy.yaml \
      --location=global
    

    régional

    Pour les équilibreurs de charge d'application externes régionaux et les équilibreurs de charge d'application internes régionaux, utilisez la commande suivante :

    gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \
      --source=server_tls_policy.yaml \
      --location=REGION
    

Pour en savoir plus, consultez la section Modes de validation des clients MTLS.

Étapes suivantes