MySQL : chiffrer vos connexions
Le chiffrement de la circulation des données est devenu un enjeu majeur de confidentialité et de sécurité, notamment dans l’hôpital public français. Dans ce contexte, les administrateurs de bases de données sont amenés désormais à configurer les moteurs pour que les données soient chiffrées entre le client quel qu’en soit la nature et le serveur qui héberge les données.
Génération des jeux de clés
MySQL dispose désormais de la commande mysql_ssl_rsa_setup permettant de générer trois jeux de clés utilisés au niveau du serveur et du client ! Le logiciel génère les 6 fichiers nécessaires à la prise en charge du SSL au niveau MySQL :
/var/lib/mysql/ca-key.pem /var/lib/mysql/ca.pem /var/lib/mysql/server-key.pem /var/lib/mysql/server-cert.pem /var/lib/mysql/client-key.pem /var/lib/mysql/client-cert.pem
Après exécution de la commande, songez à rendre l’utilisateur mysql propriétaire de ces fichiers :
chown myslq:mysql /var/lib/mysql/*.pem
Configuration du serveur MySQL
Créez le fichier /etc/mysql/mysql.conf.d/ssl.conf, dans lequel vous devrez ajouter afin de forcer le chiffrement :
[mysqld] require_secure_transport=ON ssl-ca=/var/lib/mysql/ca.pem ssl-cert=/var/lib/mysql/server-cert.pem ssl-key=/var/lib/mysql/server-key.pem
Relancez MySQL :
systemctl restart mysql
Vous pouvez vérifier que le moteur prend en charge le chiffrement, en vous connectant localement à l’instance MySQL à l’aide de :
mysql -u root -p
Puis, tapez sous l’interpréteur MySQL :
mysql> SHOW VARIABLES LIKE '%ssl%'; +--------------------+--------------------------------+ | Variable_name | Value | +--------------------+--------------------------------+ | have_openssl | YES | | have_ssl | YES | | mysqlx_ssl_ca | | | mysqlx_ssl_capath | | | mysqlx_ssl_cert | | | mysqlx_ssl_cipher | | | mysqlx_ssl_crl | | | mysqlx_ssl_crlpath | | | mysqlx_ssl_key | | | ssl_ca | /var/lib/mysql/ca.pem | | ssl_capath | | | ssl_cert | /var/lib/mysql/server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_fips_mode | OFF | | ssl_key | /var/lib/mysql/server-key.pem | +--------------------+--------------------------------+ 17 rows in set (0,00 sec)
Utilisation des clés de chiffrement au niveau du client
Concernant le client, après avoir récupéré dans le répertoire /var/lib/mysql du serveur les fichiers ca.pem, client-key.pem, client-cert.pem vous pouvez chiffrer vos communications avec le serveur en tapant :
mysql --ssl-mode=VERIFY_CA --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -u root -p
Sous l’interpréteur MySQL, tapez la commande suivant, afin de vérifier l’algorithme SSL utilisé :
mysql> SHOW SESSION STATUS LIKE 'Ssl_version'; +---------------+---------+ | Variable_name | Value | +---------------+---------+ | Ssl_version | TLSv1.2 | +---------------+---------+ 1 row in set (0,00 sec)
Pour configurer une connexion SSL dans MySQL Workbench, vous devez, au préalable, récupérer les fichiers ca.pem, client-key.pem et client-cert.pem, afin de les stocker sur la station de travail. Complétez ensuite l’onglet SSL au niveau des propriétés de la connexion :
Cliquez ensuite sur le bouton Test Connection.
Source : MySQL > Using Encrypted Connections
MySQL / Formateur MySQL, MySQL, SSL