Configurer des certificats SSL/TLS

Cette page explique comment configurer une instance pour qu'elle utilise SSL/TLS. En savoir plus sur l'utilisation de SSL/TLS avec Cloud SQL.

Aperçu

Cloud SQL crée automatiquement un certificat de serveur lors de la création d'une instance. Pour utiliser SSL/TLS, vous devez créer un certificat client et télécharger les certificats sur la machine hôte du client MySQL. Si vous envisagez de vous connecter via SSL/TLS, nous vous recommandons d'appliquer SSL/TLS à toutes les connexions.

Exiger SSL/TLS

Lorsque l'exigence SSL/TLS est activée, vous pouvez utiliser le proxy Cloud SQL ou les certificats SSL/TLS pour vous connecter à votre instance Cloud SQL. Si vous n'exigez pas SSL/TLS, les clients sans certificat valide sont autorisés à se connecter.

Pour activer l'exigence SSL/TLS, procédez comme suit :

Console

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.
    Accéder à la page "Instances Cloud SQL"
  2. Cliquez sur un nom d'instance pour ouvrir la page Détails de l'instance.
  3. Cliquez sur le lien Connexions dans le volet de navigation de gauche.
  4. Accédez à la section des connexions SSL.
  5. Cliquez sur Autoriser uniquement les connexions SSL.

gcloud

gcloud sql instances patch [INSTANCE_NAME] --require-ssl
  

REST v1beta4

  1. Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • project-id : ID du projet.
    • instance-id : ID de l'instance.

    Méthode HTTP et URL :

    PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    Corps JSON de la requête :

    {
      "settings": {
        "ipConfiguration": {"requireSsl": "true"}
      }
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

Certificats du serveur

Cloud SQL crée automatiquement un certificat de serveur lors de la création d'une instance. Tant que celui-ci est valide, vous n'avez pas besoin de gérer activement le certificat du serveur. Toutefois, le certificat possède une date d'expiration de 10 ans. Après ce délai, il n'est plus valide et les clients ne sont plus en mesure d'établir une connexion sécurisée à votre instance à l'aide de ce certificat.

Dans la console, vous pouvez obtenir des informations sur le certificat du serveur, telles que sa date de création et d'expiration, ou vous pouvez en créer un manuellement.

Console

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.

    Accéder à la page "Instances Cloud SQL"

  2. Cliquez sur un nom d'instance pour ouvrir la page Détails de l'instance.
  3. Cliquez sur le lien Connexions dans le volet de navigation de gauche.
  4. Accédez à la section Configurer les certificats de serveur SSL.

    Vous pouvez consulter la date d'expiration de votre certificat de serveur dans le tableau.

Certificats clients

Créer un certificat client

Vous pouvez créer jusqu'à 10 certificats clients pour chaque instance. Si vous perdez la clé privée d'un certificat, vous devez en créer un nouveau. La clé privée ne peut pas être récupérée.

Console

  1. Accédez à la page "Instances Cloud SQL" dans Google Cloud Console.

    Accéder à la page "Instances Cloud SQL"

  2. Cliquez sur un nom d'instance pour ouvrir la page Détails de l'instance.
  3. Cliquez sur le lien Connexions dans le volet de navigation de gauche.
  4. Accédez à la section Configurer les certificats du client SSL.
  5. Cliquez sur Créer un certificat client.
  6. Dans la boîte de dialogue Créer un certificat client, ajoutez un nom unique.
  7. Cliquez sur Créer.
  8. Dans la première section de la boîte de dialogue Nouveau certificat SSL créé, cliquez sur Télécharger client-key.pem pour télécharger la clé privée dans un fichier nommé client-key.pem.
  9. Dans la deuxième section, cliquez sur Télécharger client-cert.pem pour télécharger le certificat client dans un fichier nommé client-cert.pem.
  10. Dans la troisième section, cliquez sur Télécharger server-ca.pem pour télécharger le certificat de serveur dans un fichier nommé server-ca.pem.
  11. Cliquez sur Fermer.

gcloud

  1. Créez un certificat client à l'aide de la commande ssl client-certs create :

    gcloud sql ssl client-certs create [CERT_NAME] client-key.pem --instance=[INSTANCE_NAME]
    
  2. Récupérez la clé publique du certificat que vous venez de créer, puis copiez-la dans le fichier client-cert.pem à l'aide de la commande ssl client-certs describe :

    gcloud sql ssl client-certs describe [CERT_NAME] --instance=[INSTANCE_NAME] --format="value(cert)" > client-cert.pem
    
  3. Copiez ensuite le certificat de serveur dans le fichier server-ca.pem à l'aide de la commande instances describe :

    gcloud sql instances describe [INSTANCE_NAME]  --format="value(serverCaCert.cert)" > server-ca.pem
    
  4. gcloud sql instances restart [INSTANCE_NAME]
    

REST v1beta4

  1. Créez un certificat SSL/TLS en lui attribuant un nom unique pour cette instance :

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • project-id : ID du projet.
    • instance-id : ID de l'instance
    • client-cert-name : nom du certificat client

    Méthode HTTP et URL :

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts

    Corps JSON de la requête :

    {
      "commonName" : "client-cert-name"
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

  2. À partir de la réponse obtenue, copiez tout le contenu du certificat entre guillemets (sans inclure les guillemets) dans des fichiers locaux, comme suit :
    1. Copiez serverCaCert.cert dans server-ca.pem.
    2. Copiez clientCert.cert dans client-cert.pem.
    3. Copiez certPrivateKey dans client-key.pem.
  3. Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • project-id : ID du projet.
    • instance-id : ID de l'instance
    • activation-policy : la règle d'activation peut être définie sur ALWAYS ou NEVER.

    Méthode HTTP et URL :

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/restart

    Corps JSON de la requête :

    {
      "settings": {
        "activationPolicy": "activation-policy"
      }
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

    {
      "kind": "sql#operation",
      "targetLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-20T21:30:35.667Z",
      "operationType": "RESTART",
      "name": "operation-id",
      "targetId": "instance-id",
      "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
      "targetProject": "project-id"
    }
    

À ce stade, vous avez :

  • un certificat de serveur enregistré sous server-ca.pem ;
  • un certificat de clé publique client enregistré sous client-cert.pem ;
  • une clé privée client enregistrée sous client-key.pem.

Selon l'outil que vous utilisez pour vous connecter, ces trois éléments sont spécifiés de différentes manières. Par exemple, lors de la connexion via un client MySQL, ces trois fichiers correspondent respectivement aux valeurs des options de commande --ssl-ca, --ssl-cert et --ssl-key. Pour un exemple de connexion utilisant un client MySQL et SSL/TLS, consultez la section Se connecter avec un client MySQL.

Étapes suivantes