Connexion SSL MySQL OpenSSL sur Ubuntu Lucid et Maverick

MySQL-SSLLa suite d’une interminable saga pour utiliser OpenSSL avec Mysql.
Cette fois, le Lucid Lynx se comporte à la Etch lorsqu’on recompile Mysql avec OpenSSL, c’est-à-dire : Pouet!?
En gros, je vais compiler la version Mysql de Karmic pour Lucid.

J’ai posté un bug report dans launchpad –> https://bugs.launchpad.net/lucid/+bug/593406

Le problème est que même en recompilant Mysql avec OpenSSL la connexion reste impossible…
C’est pourquoi je recompile la dernière version publiée sous Karmic dans Lucid.

Edit : Ce n’est plus nécessaire!

Oui il y a un bug, mais vous pouvez le contourner en spécifiant uniquement --ssl-ca lors de votre connexion.
Ne pas spécifier --ssl-cert ni --ssl-key
Vous devez toutefois recompiler mysql avec OpenSSL!
HOURRA!

Pour compiler mysql 5.1 avec OpenSSL [c’est ce que je va faire] Point 1 plus bas

Voici un lien pour y arriver sous Karmic.
https://www.momocello.com/connexion-ssl-mysql-openssl-sur-ubuntu-karmic/
Voici un lien pour y arriver sous Etch et Lenny.
https://www.momocello.com/connexion-ssl-mysql-openssl-sur-debian-etch-lenny/

Pour savoir si mon serveur MySQL supporte SSL ou OpenSSL : (Normalement…)

// Une fois connecté MySQL :
SHOW VARIABLES LIKE '%ssl%';


+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| have_openssl  | DISABLED               |
| have_ssl      | DISABLED               |
| ssl_ca        | /etc/mysql/ca-cert.pem |
| ssl_capath    |                        |
| ssl_cert      | /etc/mysql/cert.pem    |
| ssl_cipher    |                        |
| ssl_key       | /etc/mysql/key.pem     |
+---------------+------------------------+

Si vous avez NO
Mysql ne supporte pas SSL
Si vous avez DISABLED
Mysql supporte SSL, mais vous avez un problème de certificats
Si vous avez YES
Tout est en ordre et prêt pour les connexions encryptées (Normalement…)

Pour Débugger

nano /var/log/syslog
nano /var/log/mysql/error.log

1-AppArmor pourrait bloquer vos certificats [à vérifier maintenant ou plus tard]
Vous avez mis vos certificats ailleurs que dans /etc/var/mysql

nano /etc/apparmor.d/usr.sbin.mysqld
//Ajoutez

/etc/mysql/<votre dossier de certificats>/* r,

service apparmor restart
service mysql restart

2-Préparation Ubuntu Lucid :
Mon serveur me dit DISABLED
J’ai installé mes certificats et vérifié AppArmor : il me dit YES
Je fais un test :
failed error: ‘SSL connection error’
Let’s go!

aptitude update

aptitude install libssl-dev openssl devscripts build-essential fakeroot debian-builder libtool libncurses5-dev libwrap0-dev libreadline5-dev libreadline-dev chrpath automake1.9 dpatch gawk bison libdbi-perl libdbd-mysql-perl

apt-get build-dep mysql-server-5.1 debhelper doxygen texlive-latex-base hardening-wrapper

nano /etc/apt/sources.list
Edit : Ce n'est plus nécessaire!
Compilez avec votre version et oubliez la prochaine ligne.
Changer tous les "lucid" pour "karmic"
aptitude update

3-Téléchargez les sources de MySQL :

VOUS NE POUVEZ CONTINUER EN ROOT.
Veuillez continuer en tant qu’utilisateur
cd /home/<votre utilisateur>
mkdir build
cd build
apt-get source mysql-server-5.1

4-Changements avant la compilation :

cd mysql*
nano debian/rules
//changez `--with-ssl` pour `--with-ssl=/usr/include/openssl`

nano debian/changelog
Ajoutez une nouvelle entrée en modifiant le numéro de version (+1) et en ajoutant une description (Added SSL)

Mon entrée au changelog
mysql-dfsg-5.1 (5.1.37-1ubuntu5.4+sslfix) karmic; urgency=low

  * Added OpenSSL

 -- Guillermo Simeon <mon_mail@espacecode.com> Sat, 12 Jun 2010 23:32:37 -0500

5-Compilation :

debuild -us -uc
//-us -uc pour les non-responsables de paquets
Prendre une pause :)

6-Installation :

cd ..
Le akonadi-server doit être downgradé.
Le paquet libboost-program-options1.38.0 doit être installé.
Le paquet libakonadiprivate1 doit être installé.

aptitude install libakonadiprivate1

Je vais télécharger les dernières versions des paquets suivants de Karmic.
(pour vérifier les versions : http://packages.ubuntu.com)

wget http://mirrors.kernel.org/ubuntu/pool/main/a/akonadi/akonadi-server_1.2.1-0ubuntu4_i386.deb

wget http://mirrors.kernel.org/ubuntu/pool/main/b/boost1.38/libboost-program-options1.38.0_1.38.0-6ubuntu6_i386.deb

su
dpkg -i akonadi-server*.deb libboost-program*.deb
aptitude purge mysql-server mysql-server-5.1 mysql-testsuite
dpkg -i *.deb

//à répéter si code d'erreur.
dpkg -i *.deb

//si problème de connexion vers MySQL
dpkg-reconfigure mysql-server-5.1

Il peut y avoir des problèmes de dépendance, pour les régler, n'hésitez-pas à utiliser aptitude purge sur les paquets problématiques et à réinstaller les paquet de la distribution (Karmic).
Puis, réinstallez vos paquets compilés.

NE PAS OUBLIER DE REMETTRE LES BONNES SOURCES
nano /etc/apt/sources.list
Changer tous les "karmic" pour "lucid"
aptitude update

7-Configuration :

Vous voulez vous connecter à distance sur ce serveur MySQL :

nano /etc/mysql/my.cnf
Commentez
#bind-address = 127.0.0.1
service mysql restart

8-Empêcher la mise à jour des packets compilés :

aptitude hold akonadi-server libboost-program-options1.38.0 libmysqlclient16 libmysqlclient16-dev libmysqlclient-dev libmysqld-dev libmysqld-pic mysql-client mysql-client-5.1 mysql-common mysql-server mysql-server-5.1 mysql-server-core-5.1

//changez hold pour unhold pour mettre à jour de nouveau

9-Si tout va bien, c’est super.
Erreur 111 -> vérifiez le firewall
Mysql ne redémarre pas, vérifiez le mot-de-passe de debian-sys-maint

Pour créer vos certificats
https://www.momocello.com/creation-de-certificats-ssl-pour-mysql-avec-openssl/