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
- Consultez la page Présentation du protocole TLS mutuel.
Installez Google Cloud CLI. Pour une présentation complète de l'outil, consultez la présentation de gcloud CLI. Vous trouverez des commandes liées à l'équilibrage de charge dans la documentation de référence de l'API et de gcloud CLI.
Si vous n'avez pas encore utilisé gcloud CLI, exécutez d'abord
gcloud init
pour vous authentifier.Assurez-vous de savoir comment créer des pools d'autorités de certification.
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 :
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.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éeCA_POOL
: ID ou nom du pool d'autorités de certification parent
Pour décrire la nouvelle autorité de certification et créer le fichier
root.cert
, utilisez la commandegcloud 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éeCA_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 commandegcloud 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
: utilisezglobal
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 surALLOW_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 surREJECT_INVALID
, seules les requêtes fournissant un certificat client pouvant être validé sur une ressourceTrustConfig
sont transmises au backend.
Pour créer la ressource ServerTLSPolicy
, procédez comme suit :
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 etPROJECT_ID
par l'ID de votre projet Google Cloud.Option 1 :
clientValidationMode
est défini surALLOW_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 surREJECT_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
Pour créer la ressource
ServerTlsPolicy
, utilisez la commandegcloud 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
- Configurer le protocole TLS mutuel pour un équilibreur de charge d'application externe global
- Configurer le protocole TLS mutuel pour un équilibreur de charge d'application classique
- Configurer le protocole TLS mutuel pour un équilibreur de charge d'application interne
- Configurer le protocole TLS mutuel pour un équilibreur de charge d'application externe régional
- Configurer un protocole TLS mutuel avec des certificats signés