Configurer un certificat SSL/TLS pour MySQL sur Ubuntu ou Debian

configuration SSL/TLS pour MySQL sur Ubuntu debian

Secure Socket Layer (SSL) et Transport Layer Security (TLS) sont des protocoles cryptographiques utilisés pour établir des connexions sécurisées entre un client et un serveur. Lorsqu’il s’agit de systèmes de gestion de bases de données comme MySQL, la configuration de SSL/TLS peut aider à protéger les données sensibles lors de leur transmission. Dans cet article, nous allons vous guider à travers le processus de configuration de SSL/TLS pour MySQL sur Ubuntu.

Prérequis

Avant de commencer, assurez-vous que vous disposez des conditions préalables suivantes :

  1. Un serveur Ubuntu ou Debian avec MySQL installé.
  2. Accès root ou sudo au serveur.
  3. Un nom de domaine enregistré ou une adresse IP valide.

Étape 1 : Générer des certificats SSL/TLS

La première étape consiste à générer des certificats SSL/TLS pour MySQL. Suivez les étapes suivantes :

1- Ouvrez une fenêtre de terminal sur votre serveur Ubuntu.

2- Générer une clé privée en exécutant la commande suivante :

$ openssl genrsa -out server-key.pem 2048 

Cette commande génère un fichier de clé privée nommé server-key.pem.

3- Ensuite, générer une demande de signature de certificat (CSR) en exécutant la commande suivante :

$ openssl req -new -key server-key.pem -out server-csr.pem 

Cette commande génère un fichier CSR nommé server-csr.pem. Vous serez invité à fournir des informations telles que le pays, l’état, l’organisation et le nom commun (nom de domaine ou adresse IP).

4- Maintenant, générez un certificat SSL/TLS auto-signé à l’aide de la CSR en exécutant la commande suivante :

$ openssl x509 -req -in server-csr.pem -signkey server-key.pem -out server-cert.pem 

Cette commande génère un certificat auto-signé nommé server-cert.pem.

5- Enfin, déplacez les fichiers de certificats et de clés générés dans le répertoire SSL/TLS de MySQL en exécutant les commandes suivantes :

$ sudo mv server-key.pem /etc/mysql/mysql-server-key.pem
$ sudo mv server-cert.pem /etc/mysql/mysql-server-cert.pem 
$ sudo mv server-csr.pem /etc/mysql/mysql-server-csr.pem 

Ces commandes déplacent les fichiers dans le répertoire /etc/mysql/, qui est le répertoire SSL/TLS par défaut pour MySQL sur Ubuntu.

Étape 2 : Configurer MySQL pour utiliser SSL/TLS

Après avoir généré les certificats SSL/TLS, nous devons configurer MySQL pour qu’il les utilise. Suivez les étapes suivantes :

1- Ouvrez le fichier de configuration de MySQL à l’aide d’un éditeur de texte. Par exemple, vous pouvez ouvrir le fichier de configuration de MySQL à l’aide d’un éditeur de texte :

$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

2- Localisez la section [mysqld] dans le fichier de configuration.

3- Ajoutez les lignes suivantes pour activer SSL/TLS :

ssl-ca=/etc/mysql/mysql-server-cert.pem 
ssl-cert=/etc/mysql/mysql-server-cert.pem 
ssl-key=/etc/mysql/mysql-server-key.pem 

Ces lignes indiquent les chemins d’accès au certificat SSL/TLS et aux fichiers clés générés à l’étape 1.

4- Sauvegardez les modifications et quittez l’éditeur de texte.

5- Redémarrez le service MySQL pour appliquer les changements de configuration :

$ sudo service mysql restart 

MySQL sera maintenant configuré pour utiliser SSL/TLS pour les connexions sécurisées.

Étape 3 : Configuration des connexions sécurisées pour les clients distants

Pour configurer des connexions sécurisées pour les clients distants, procédez comme suit :

1- Ouvrez le fichier de configuration de MySQL à l’aide d’un éditeur de texte. Par exemple :

$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

2- Localisez la section [mysqld] dans le fichier de configuration.

3- Ajoutez la ligne suivante pour activer SSL/TLS pour les clients distants :

require_secure_transport=ON 

Cette ligne garantit que les clients distants doivent utiliser SSL/TLS pour se connecter au serveur MySQL.

4- Sauvegardez les modifications et quittez l’éditeur de texte.

5- Redémarrez le service MySQL pour appliquer les changements de configuration :

$ sudo service mysql restart 

MySQL demande désormais aux clients distants d’utiliser SSL/TLS pour les connexions sécurisées.

Étape 4 : Vérifier la configuration SSL/TLS

Pour vérifier si SSL/TLS est correctement configuré pour MySQL, procédez comme suit :

1- Ouvrez le client MySQL en exécutant la commande suivante :

$ mysql -u root -p

2- Saisissez votre mot de passe racine MySQL lorsque cela vous est demandé.

3- Une fois connecté au shell MySQL, exécutez la commande suivante pour vérifier si SSL/TLS est activé :

sql> SHOW VARIABLES LIKE 'have_ssl'; 

Si la sortie indique que have_ssl est YES, SSL/TLS est activé et fonctionne correctement.

4- Pour visualiser les paramètres SSL/TLS, exécutez la commande suivante :

sql> SHOW VARIABLES LIKE 'ssl%'; 

La sortie affichera diverses variables relatives à SSL/TLS, y compris les chemins d’accès aux fichiers de certificat et de clé.

5- Vous pouvez également tester les connexions SSL/TLS en essayant de vous connecter au serveur MySQL à l’aide de SSL/TLS. Par exemple:

$ mysql -u root -p --ssl-ca=/etc/mysql/mysql-server-cert.pem --ssl-cert=/etc/mysql/mysql-server-cert.pem --ssl-key=/etc/mysql/mysql-server-key.pem 

Si la connexion est réussie, SSL/TLS fonctionne correctement.

Conclusion

La configuration de SSL/TLS pour MySQL sur Ubuntu ajoute une couche de sécurité supplémentaire à votre système de base de données, garantissant que les données sensibles restent protégées pendant la transmission. En suivant les étapes décrites dans cet article, vous pouvez générer des certificats SSL/TLS, configurer MySQL pour les utiliser et activer des connexions sécurisées pour les clients distants. N’oubliez pas de mettre régulièrement à jour vos certificats SSL/TLS afin de maintenir le niveau de sécurité le plus élevé pour votre serveur MySQL.

Laisser un commentaire