View previous topic :: View next topic |
Author |
Message |
bennyzzz n00b
Joined: 25 Oct 2012 Posts: 10
|
Posted: Sun Mar 03, 2013 4:34 pm Post subject: [MySQL] SSL connection |
|
|
Salut à tous,
J'ai un petit problème pour faire fonctionner mysql en utilisant SSL. N'ayant pas réussi à le faire fonctionner sur Gentoo, et ce sur différents systèmes... j'ai tenté sur une autre distribution (mint pour ne citer personne) et avec la même configuration mysql et les mêmes certificats cela fonctionne.
J'ai pas mal googlé mais j'ai rien trouvé concernant Gentoo, SSL et MySQL donc j'ai ouvert un bug. Malgré tout si quelqu'un à réussi à faire le setup et peut m'aider, je suis plus que preneur.
Merci d'avance. |
|
Back to top |
|
|
bennyzzz n00b
Joined: 25 Oct 2012 Posts: 10
|
Posted: Wed Mar 06, 2013 7:34 am Post subject: |
|
|
Personne n'a jamais eu de problème, ou personne n'a jamais essayé
Si vous avez 20 minutes à perdre, je vous serais très reconnaissant d'essayer et de me dire ici-même ou dans le bug ouvert si vous avez le même problème ou pas ?
Merci d'avance ! |
|
Back to top |
|
|
boozo Advocate
Joined: 01 Jul 2004 Posts: 3193
|
Posted: Wed Mar 06, 2013 2:05 pm Post subject: |
|
|
'alute
Edit : Ayé!
Suis pas expert en mysql mais ça roule chez moi en local (client+serveur) avec mysql-5.1.67 + openssl-1.0.1c.
[Bon soit, j'enjolive un brin les choses : j'y ai passé plus de 20mins du fait des multiples tests et recherches ]
=> Alors le problème doit se situer pour toi lors de la génération des certificats.
Il y a un bug upstream qui traine depuis quelques mois à ce sujet et (autre ref complémentaire) je peux confirmer que le workaround marche dans mes différents tests car si je procède de même (process ci-après) en mettant les mêmes valeurs de références partout, je retombe bien sur le même echec de connexion que toi.
Voilà c'est pas garanti sur facture mais il est très probable qu'il en soit de même chez toi
ps: Au fait, bienvenue sur gentoo et le forum FR ^^
En synthèse ci-après si besoin de tester :
D'après ce que tu indiques dans ton rapport, le côté serveur semble ok et je fait le présupposé que tu disposes bien d'un user (non root) qui a les droits nécessaires en connection ssl i.e. chez moi
Code: | mysql> show grants for 'bozossl'@'localhost';
+-------------------------------------------------------------------------------------------------------------------------------------+
| Grants for bozossl@localhost |
+-------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'bozossl'@'localhost' IDENTIFIED BY PASSWORD '*E45429EA6A0BD15BE30021ED1B4985D6CBAE4FF0' REQUIRE SSL |
+-------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
|
Ensuite générer les certificats selon la procédure standard que tu utilises également (je te t'indiques mes valeurs de test)
Code: | #openssl genrsa 2048 > ca-key.pem |
Code: | #openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca-cert.pem
(...)
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Eutopia
Locality Name (eg, city) []:Liberty
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Fy
Organizational Unit Name (eg, section) []:Fy1
Common Name (e.g. server FQDN or YOUR name) []:Fy01
Email Address []: |
Code: | #openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem
(...)
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Eutopia
Locality Name (eg, city) []:Liberty
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Fy
Organizational Unit Name (eg, section) []:Fy2
Common Name (e.g. server FQDN or YOUR name) []:Fy02
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:erty
An optional company name []:Fy002
|
Code: | # openssl rsa -in server-key.pem -out server-key.pem
writing RSA key |
Code: | #openssl x509 -req -in server-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
Signature ok
subject=/C=FR/ST=Eutopia/L=Liberty/O=Fy/OU=Fy2/CN=Fy02
Getting CA Private Key |
Code: | #openssl req -newkey rsa:2048 -days 3600 -nodes -keyout client-key.pem -out client-req.pem
(...)
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Eutopia
Locality Name (eg, city) []:Liberty1
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Funny
Organizational Unit Name (eg, section) []:Funnylib1
Common Name (e.g. server FQDN or YOUR name) []:Fylib1
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:ertyu
An optional company name []:Fylib01 |
Code: | #openssl rsa -in client-key.pem -out client-key.pem
writing RSA key |
Code: | #openssl x509 -req -in client-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
Signature ok
subject=/C=FR/ST=Eutopia/L=Liberty1/O=Funny/OU=Funnylib1/CN=Fylib1
Getting CA Private Key |
Code: | #openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
server-cert.pem: OK
client-cert.pem: OK |
Code: | #mysql -ubozossl -hlocalhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.67-log Gentoo Linux mysql-5.1.67
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like '%ssl%';
+---------------+----------------------------------+
| Variable_name | Value |
+---------------+----------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /etc/mysql/certs/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/mysql/certs/server-cert.pem |
| ssl_cipher | |
| ssl_key | /etc/mysql/certs/server-key.pem |
+---------------+----------------------------------+
7 rows in set (0.01 sec) |
_________________ " Un psychotique, c'est quelqu'un qui croit dur comme fer que 2 et 2 font 5, et qui en est pleinement satisfait.
Un névrosé, c'est quelqu'un qui sait pertinemment que 2 et 2 font 4, et ça le rend malade ! " |
|
Back to top |
|
|
bennyzzz n00b
Joined: 25 Oct 2012 Posts: 10
|
Posted: Mon Mar 11, 2013 12:51 pm Post subject: |
|
|
Merci beaucoup d'avoir pris le temps de tester et de ton feedback... et aussi pour ton message de bienvenu, si petit soit-il
Je n'arrive pas du tout à avoir un truc qui fonctionne, donc je pense que je dois pas faire quelque chose ... mais quoi
Par contre quand je vérifie mes certificats, j'ai l'output suivante, est-ce que tu penses que cela puisse-être la cause du problème?
Code: | openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
server-cert.pem: C = AU, ST = Some-State, O = Internet Widgits Pty Ltd
error 18 at 0 depth lookup:self signed certificate
OK
client-cert.pem: C = AU, ST = Some-State, O = Internet Widgits Pty Ltd
error 18 at 0 depth lookup:self signed certificate
OK
|
Merci d'avance! |
|
Back to top |
|
|
boozo Advocate
Joined: 01 Jul 2004 Posts: 3193
|
Posted: Mon Mar 11, 2013 1:40 pm Post subject: |
|
|
Oui je le crains. Au départ, je pensais que le traditionnel warning lié au certificat autosigné était juste là à titre indicatif mais en essayant avec des valeurs non nulles j'obtiens bien une signature conforme sans warning.
Après, je n'ai pas fait un test très rigoureux pour identifier de façon formelle le champ ; j'ai juste voulu éviter un effet de bord en lien avec les blankchars en renseignant "correctement" les items.
Et c'est en spécifiant un CN client différent de celui du serveur comme le mentionne le workaround du bug que je t'ai signalé que je peux passer la connexion en ssl pour le user.
Btw, le message de bienvenu j'aurai pu le faire plus gros c'est vrai mais ça n'en modifie pas la teneur ^^ c'est suite a mes loupés de posts/edits malencontreux que j'y ai pensé.
Edit: Je n'avais pas trop de temps de contrôler tout à l'heure donc je complète :
Je ne sais pas ce qu'il en est sous Mint vu que cela fonctionne avec ton certificat actuel peut-être une différence de version de packages ? de config ? ce n'est pas toujours évident de comparer tel quel.
Quoi qu'il en soit si le besoin est sous gentoo, la politique par défaut si tu n'as rien modifié en conf ou en argument c'est "policy_match" et donc il semble bien qu'un CN doit être précisé en plus des 3 premiers items :
Code: | # For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
|
_________________ " Un psychotique, c'est quelqu'un qui croit dur comme fer que 2 et 2 font 5, et qui en est pleinement satisfait.
Un névrosé, c'est quelqu'un qui sait pertinemment que 2 et 2 font 4, et ça le rend malade ! " |
|
Back to top |
|
|
bennyzzz n00b
Joined: 25 Oct 2012 Posts: 10
|
Posted: Mon Mar 11, 2013 6:28 pm Post subject: |
|
|
boozo wrote: | Code: | #mysql -ubozossl -hlocalhost -p
Enter password:
.... |
|
Re,
est-ce que tu peux me dire si tu essaies simplement comme ci-dessus ? Pour ma part ça foire même avant, avec la commande suivante:
Code: | mysql -ubozossl --ssl-ca=/etc/mysql/certs/ca-cert.pem -p |
Or cette commande est censée fonctionner sur la machine local...
Cela implique donc que le certificat du client n'est même pas encore utilisé, et donc que le CN comme tu indiques très justement n'est même pas encore impliqué...
Est-ce que tu peux stp me coller les parties "mysqld" et "client" de ton my.cnf ? Je pense pas que le problème vienne de là mais comme tu t'es porté volontaire pour me filer un coup de main autant que j'en profite |
|
Back to top |
|
|
boozo Advocate
Joined: 01 Jul 2004 Posts: 3193
|
Posted: Mon Mar 11, 2013 6:46 pm Post subject: |
|
|
Oui bien sûr que les 2 cas de figures fonctionnent - quoi que forcer la conf n'est pas utile vu le paramétrage -
Code: | $ mysql -ubozossl --ssl-ca=/etc/mysql/certs/ca-cert.pem -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.67-log Gentoo Linux mysql-5.1.67
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> \s
--------------
mysql Ver 14.14 Distrib 5.1.67, for pc-linux-gnu (i686) using readline 5.1
Connection id: 1
Current database:
Current user: bozossl@localhost
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: /usr/bin/less
Using outfile: ''
Using delimiter: ;
Server version: 5.1.67-log Gentoo Linux mysql-5.1.67
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 37 sec
Threads: 1 Questions: 4 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.108
--------------
mysql> |
Donc c'est peut-être ton paramétrage en effet - si besoin donc le service en cours d'utilisation :
Code: | mysql 12463 0.3 2.4 82320 25440 ? Ssl 19:33 0:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --ssl --skip-networking
|
je te mets les qq extraits pertinents du my.cnf wrote: | Code: |
(...)
[client]
#password = your_password
port = 3306
socket = /var/run/mysqld/mysqld.sock
ssl-ca=/etc/mysql/certs/ca-cert.pem
ssl-cert=/etc/mysql/certs/client-cert.pem
ssl-key=/etc/mysql/certs/client-key.pem
(...)
[mysqld]
character-set-server = utf8
user = mysql
port = 3306
socket = /var/run/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pid
log-error = /var/log/mysql/mysqld.err
basedir = /usr
datadir = /var/lib/mysql
(...)
ssl-ca=/etc/mysql/certs/ca-cert.pem
ssl-cert=/etc/mysql/certs/server-cert.pem
ssl-key=/etc/mysql/certs/server-key.pem
bind-address = 127.0.0.1
(...)
|
|
_________________ " Un psychotique, c'est quelqu'un qui croit dur comme fer que 2 et 2 font 5, et qui en est pleinement satisfait.
Un névrosé, c'est quelqu'un qui sait pertinemment que 2 et 2 font 4, et ça le rend malade ! " |
|
Back to top |
|
|
bennyzzz n00b
Joined: 25 Oct 2012 Posts: 10
|
Posted: Mon Mar 11, 2013 7:31 pm Post subject: |
|
|
Ah je dois en effet un problème au vu du process qui tourne :
Code: | mysql 25809 1 0 18:41 ? 00:00:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf |
En revanche ma configuration est comme je le pensais exacte ( )
Et même quand je lance mysqld à la main avec les mêmes paramètres que ce que tu as, le ssl ne passe pas alors je me demande 2 choses:
1) Quel est le trigger pour les paramètres de démarrage de mysql, est-ce le USE flag ou est-ce la conf ?
2) J'ai du foiré un truc quelque part au moment de l'installation pour que avec tes options cela ne fonctionne pas mieux...
Voici mon package.use:
Code: | dev-db/mysql ssl extraengine |
Et j'ai juste emerger dev-db/mysql ...
Je loupe quelque chose ? |
|
Back to top |
|
|
boozo Advocate
Joined: 01 Jul 2004 Posts: 3193
|
|
Back to top |
|
|
bennyzzz n00b
Joined: 25 Oct 2012 Posts: 10
|
Posted: Mon Mar 11, 2013 8:06 pm Post subject: |
|
|
Comme tu dis ....
Mais bon même avec c'est toujours le même problème ...
Code: | mysql 32617 1 0 19:54 ? 00:00:00 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --ssl --skip-networking |
Et ce que me "chagrine" c'est que j'ai tenté cette installation sur plusieurs systèmes gentoo (sur une image du bureau, sur une machine ovh, et sur un container openvz) et je n'ai toujours pas réussi à en faire fonctionner 1.... et j'arrive pas à avoir de log et ça qu'est ce que ça me frustre |
|
Back to top |
|
|
bennyzzz n00b
Joined: 25 Oct 2012 Posts: 10
|
Posted: Mon Mar 11, 2013 8:26 pm Post subject: |
|
|
Au fait tu as quoi comme USE flags ? |
|
Back to top |
|
|
boozo Advocate
Joined: 01 Jul 2004 Posts: 3193
|
Posted: Mon Mar 11, 2013 8:30 pm Post subject: |
|
|
Ah ?! étrange
Mais je lis ovh et je viens de prendre 20pts de tension alors rassure-moi :
c'est _bien_ une gentoo native qui est dessus ?
Sinon je sais que tu l'as déjà envisagé mais un pb de droits sur le(s) répertoire(s) des certificats sinon du user mysql ? (c'est une différence que j'ai avec ta conf me semble-t-il)
Juste pour voir si c'est lié (bien que j'en doute un peu m'enfin sait-on jamais) et si ce n'est déjà fait : créé-toi un user mysql spécifique, colle-lui les droits/pwd qui vont bien ainsi qu'un /etc/mysql/certs et refait dedans la procédure que je t'ai donné dans mon premier post pour générer tes cerificats - ce n'est pas que je doute mais c'est simplement pour s'affranchir d'un pb de séquence de travail par la même occasion ; des fois ça arrive de zapper une étape à force de re-re-refaire les choses
Edit: USE standard => community extraengine ssl _________________ " Un psychotique, c'est quelqu'un qui croit dur comme fer que 2 et 2 font 5, et qui en est pleinement satisfait.
Un névrosé, c'est quelqu'un qui sait pertinemment que 2 et 2 font 4, et ça le rend malade ! " |
|
Back to top |
|
|
bennyzzz n00b
Joined: 25 Oct 2012 Posts: 10
|
Posted: Mon Mar 11, 2013 8:57 pm Post subject: |
|
|
Euhhh je sais plus, c'est la gentoo que eux fournissent...
Et sinon je comprends pas bien pourquoi tu me dis que on a une différence au niveau de la conf, je ne vois pas ou ?
Sinon j'ai essayé de refaire les certificats avec le user mysql mais j'ai une erreur ...
Code: | mysql@mysqlssl ~ $ openssl genrsa 2048 > ca-key.pem
warning, not much extra random data, consider using the -rand option
Generating RSA private key, 2048 bit long modulus
139868203058856:error:24064064:random number generator:SSLEAY_RAND_BYTES:PRNG not seeded:md_rand.c:522:You need to read the OpenSSL FAQ, http://www.openssl.org/support/faq.html
139868203058856:error:04081003:rsa routines:RSA_BUILTIN_KEYGEN:BN lib:rsa_gen.c:208:
|
Je vais essayer de comprendre pourquoi j'ai cette erreur et je tente de refaire les certificats... mais je pense que ce sera pour demain
Merci de ton aide, je te tiens au courant demain. |
|
Back to top |
|
|
boozo Advocate
Joined: 01 Jul 2004 Posts: 3193
|
|
Back to top |
|
|
boozo Advocate
Joined: 01 Jul 2004 Posts: 3193
|
|
Back to top |
|
|
bennyzzz n00b
Joined: 25 Oct 2012 Posts: 10
|
Posted: Wed Mar 13, 2013 10:47 am Post subject: |
|
|
Je peux pas te répondre pour la gentoo chez OVH parce que je n'ai plus cette machine mais jepense que tu as raison, c'est leur release..
Par contre je viens de tester avec un autre user et j'ai toujours le même problème ... je ne comprends vraiment pas pourquoi je n'arrive pas à avoir cette putain de connection ssl sur aucune de mes box gentoo ... et que toi tu y arrives tout de suite .... |
|
Back to top |
|
|
boozo Advocate
Joined: 01 Jul 2004 Posts: 3193
|
|
Back to top |
|
|
bennyzzz n00b
Joined: 25 Oct 2012 Posts: 10
|
Posted: Wed Mar 13, 2013 3:09 pm Post subject: |
|
|
Merci beaucoup, en effet je pense que c'est une mauvaise manip, je vais refaire ça au calme comme tu dis !!!
Par contre juste pour être sur j'ai changé de /var/lib à /etc/mysql/
Je te tiens au courant, mais ce sera sûrement que demain parce que j'ai d'autre chat à fouetter |
|
Back to top |
|
|
|