Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment activer SSL/TLS pour MySQL dans Ubuntu

MySQL permet aux utilisateurs de se connecter en toute sécurité aux bases de données à l'aide de certificats SSL/TLS. Dans cet article, nous examinerons la configuration SSL de MySQL - comment activer SSL/TLS pour MySQL dans Ubuntu.


Comment activer SSL/TLS pour MySQL

Voici les étapes pour configurer les connexions SSL dans MySQL.


1. Installer MySQL

Ouvrez le terminal et exécutez les commandes suivantes pour installer MySQL.

$ sudo apt-get update
$ sudo apt-get install mysql-client

Lecture bonus :MySQL change le classement de toutes les tables


2. Vérifier l'état SSL

Connectez-vous à MySQL en tant que root

$ mysql -uroot -p

Vous serez invité à entrer le mot de passe root. Après vous être connecté, entrez la commande suivante pour trouver l'état SSL/TLS actuel

mysql> SHOW VARIABLES LIKE '%ssl%';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
| ssl_ca        |          |
| ssl_capath    |          |
| ssl_cert      |          |
| ssl_cipher    |          |
| ssl_crl       |          |
| ssl_crlpath   |          |
| ssl_key       |          |
+---------------+----------+

Vous constaterez que have_openssl et have_ssl les deux ont la valeur DISABLED. Cela signifie que SSL n'est pas activé dans MySQL.

Lecture bonus :meilleurs blogs de base de données à suivre


3. Générer des certificats SSL/TLS

Ensuite, nous devons générer des certificats SSL/TLS et pointer le serveur MySQL vers leurs emplacements. Généralement, les utilisateurs utilisent openssl pour générer des certificats SSL, puis les déplacent vers /var/lib/mysql qui est l'emplacement par défaut des fichiers SSL pour le serveur MySQL.

Cependant, MySQL 5.7 et les versions ultérieures sont déjà livrées avec un utilitaire mysql_ssl_rsa_setup pour simplifier ce processus. Il génère des certificats SSL et les stocke dans /var/lib/mysql.

Puisque nous avons besoin du processus mysql pour pouvoir lire ces fichiers, nous allons créer mysql en tant que propriétaire de ces fichiers, comme indiqué ci-dessous.

Exécutez la commande suivante pour générer des certificats SSL

$ sudo mysql_ssl_rsa_setup --uid=mysql

Generating a 2048 bit RSA private key ...................................+++ .....+++ 
writing new private key to 'ca-key.pem' 
----- 
Generating a 2048 bit RSA private key ......+++ .................................+++ 
writing new private key to 'server-key.pem' 
----- 
Generating a 2048 bit RSA private key ......................................................+++ .................................................................................+++ 
writing new private key to 'client-key.pem' 
-----

Vous pouvez vérifier les fichiers générés en exécutant la commande suivante

$ ls -all /var/lib/mysql/*.pem

Vous verrez quelque chose comme ce qui suit

256740      4 -rw-r--r--   1 mysql    mysql        1078 May 1 12:24 /var/lib/mysql/server-cert.pem
   256735      4 -rw-------   1 mysql    mysql        1675 May 1 12:24 /var/lib/mysqlsql/ca-key.pem
   256739      4 -rw-r--r--   1 mysql    mysql         451 May 1 12:24 /var/lib/mysqlsql/public_key.pem
   256741      4 -rw-------   1 mysql    mysql        1689 May 1 12:24 /var/lib/mysqlsql/client-key.pem
   256737      4 -rw-r--r--   1 mysql    mysql        1064 May 1 12:24 /var/lib/mysqlsql/ca.pem
   256743      4 -rw-r--r--   1 mysql    mysql        1048 May 1 12:24 /var/lib/mysqlsql/client-cert.pem
   256736      4 -rw-------   1 mysql    mysql        1625 May 1 12:24 /var/lib/mysqlsql/private_key.pem
   256738      4 -rw-------   1 mysql    mysql        1615 May 1 12:24 /var/lib/mysqlsql/server-key.pem

Il s'agit du fichier de certificat SSL et des paires de clés privées pour l'autorité de certification, le serveur MySQL et le client MySQL.

Lecture bonus :meilleures alternatives MySQL Workbench


4. Activer les connexions SSL sur le serveur MySQL

Ensuite, redémarrez MySQL Server pour activer SSL/TLS dans MySQL.

$ sudo systemctl restart mysql 

MySQL Server recherchera automatiquement les fichiers de certificat SSL dans /var/lib/mysql au démarrage. Vous n'avez donc pas à spécifier manuellement leur emplacement dans le fichier de configuration MySQL.

Lecture bonus :Comment activer le cache de requêtes MySQL


5. Vérifier la connexion SSL

Connectez-vous à MySQL comme avant (étape 2) et exécutez la commande suivante.

SHOW VARIABLES LIKE '%ssl%';
Output
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+

Vous trouverez maintenant have_openssl et have_ssl variables sont OUI. Vous verrez également que ssl_ca , certificat_ssl et ssl_key sont remplis avec les valeurs appropriées.

Vous pouvez également vérifier vos informations de connexion.

mysql> \s

-------------- 
. . . 
SSL: Cipher in use is DHE-RSA-AES256-SHA 
. . . 
Connection: 127.0.0.1 via TCP/IP 
. . . 
--------------


6. Configurer SSL pour la connexion à distance (facultatif)

Si votre serveur MySQL a des connexions entrantes à distance, vous pouvez activer SSL pour la connexion à distance, et même le rendre obligatoire en modifiant le fichier de configuration du serveur MySQL.

Ouvrez le terminal et exécutez la commande suivante pour ouvrir la configuration MySQL.

$ sudo vi /etc/mysql/my.cnf

Ajoutez le bloc de code [mysqld] comme indiqué, sous les deux instructions !includedir.

!includedir /etc/mysql/conf.d/ 
!includedir /etc/mysql/mysql.conf.d/ 

[mysqld] 
# Require clients to connect either using SSL 
# or through a local socket file 
require_secure_transport = ON
bind-address = 0.0.0.0

Dans la dernière ligne, nous avons défini bind-address sur 0.0.0.0 pour autoriser les connexions à distance. Vous n'avez pas besoin de l'ajouter si vous avez déjà activé les connexions à distance.

Redémarrez MySQL Server pour appliquer les modifications. À partir de maintenant, MySQL exigera SSL.

Pour les connexions à distance, n'oubliez pas d'ouvrir le port 443 au lieu du 3306 par défaut. En effet, les connexions SSL se font sur le port 443 et non sur le 3306.

Espérons que cet article vous aidera à activer la connexion SSL/TLS dans MySQL.