La création de certificats de sécurité SSL au moyen de openSSL devient assez facile après quelques usages. Voici comment créer des CA (certificate authority) qui permettront une communication SSL entre 2 serveurs MySQL.
Installation de openSSL :
aptitude update
aptitude install openssl
Créer les certificats SSL (CA)
mkdir /etc/mysql/openssl
cd /etc/mysql/openssl/Lorsque vous créez vos certificats, certaines questions vous seront posées.
Il est recommandé d’y répondre dans un environnement de production.
Laissez vide pour la question `challenge password` et `suivante` s’il y a lieu.
openssl req -x509 -new -days 9999 -newkey rsa:2048 -nodes -keyout ca-key.pem -out ca-cert.pem
openssl req -new -newkey rsa:2048 -nodes -keyout key.pem -out csr.pem
openssl rsa -in key.pem -out key.pem
openssl x509 -req -days 9999 -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -CAserial ca-srl.txt -in csr.pem -out cert.pem
Nous allons maintenant modifier le fichier de configuration mysql :
nano /etc/mysql/my.cnf
Repérez, modifiez et décommentez les 3 ssl dans la section [mysqld]
ssl-ca=/etc/mysql/openssl/ca-cert.pem
ssl-cert=/etc/mysql/openssl/cert.pem
ssl-key=/etc/mysql/openssl/key.pem
cd /etc/mysql
chown -R mysql:mysql openssl
chmod -R 500 openssl
Redémarrer MySQL
/etc/init.d/mysql restart
Vérification du support SSL :
mysql> SHOW VARIABLES LIKE '%ssl%';
Si vous voyez ceci, tout est ok!
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl | YES |
+---------------+-------+
Si vous voyez « DISABLED », veuillez re-créer vos certificats et redémarrer mysql.
ATTENTION! :
Depuis MySQL 5.1.38, il est impossible d'obtenir une connexion encryptée sans le message d'erreur 2026 :
'SSL connection error'
Pour contourner cela, vous devez omettre les options --ssl-cert et --ssl-key lors de vos connexions.
Spécifiez uniquement --ssl-ca
--ssl --ssl-ca=<votre certificat ca>
ou
--ssl --ssl-ca=/dev/null
This Epopée was painful.