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 :
- Un serveur Ubuntu ou Debian avec MySQL installé.
- Accès root ou sudo au serveur.
- 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.