Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[MySQL] SSL connection
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
bennyzzz
n00b
n00b


Joined: 25 Oct 2012
Posts: 10

PostPosted: Sun Mar 03, 2013 4:34 pm    Post subject: [MySQL] SSL connection Reply with quote

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
View user's profile Send private message
bennyzzz
n00b
n00b


Joined: 25 Oct 2012
Posts: 10

PostPosted: Wed Mar 06, 2013 7:34 am    Post subject: Reply with quote

Personne n'a jamais eu de problème, ou personne n'a jamais essayé :roll:

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
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3193

PostPosted: Wed Mar 06, 2013 2:05 pm    Post subject: Reply with quote

'alute

Edit : Ayé! :oops:

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 :lol: ]
=> 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 :wink:
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
View user's profile Send private message
bennyzzz
n00b
n00b


Joined: 25 Oct 2012
Posts: 10

PostPosted: Mon Mar 11, 2013 12:51 pm    Post subject: Reply with quote

Merci beaucoup d'avoir pris le temps de tester et de ton feedback... et aussi pour ton message de bienvenu, si petit soit-il :P

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
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3193

PostPosted: Mon Mar 11, 2013 1:40 pm    Post subject: Reply with quote

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
View user's profile Send private message
bennyzzz
n00b
n00b


Joined: 25 Oct 2012
Posts: 10

PostPosted: Mon Mar 11, 2013 6:28 pm    Post subject: Reply with quote

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
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3193

PostPosted: Mon Mar 11, 2013 6:46 pm    Post subject: Reply with quote

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
View user's profile Send private message
bennyzzz
n00b
n00b


Joined: 25 Oct 2012
Posts: 10

PostPosted: Mon Mar 11, 2013 7:31 pm    Post subject: Reply with quote

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 ( :cry: )
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
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3193

PostPosted: Mon Mar 11, 2013 7:45 pm    Post subject: Reply with quote

Ah ben oui là... c'est bien d'avoir compilé le support ssl pour mysql mais encore faut-il lancer le démon avec :wink:

Renseigne au moins $MY_ARGS="--ssl" dans /etc/conf.d/mysql et relance le service voir si c'est mieux
_________________
" 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
View user's profile Send private message
bennyzzz
n00b
n00b


Joined: 25 Oct 2012
Posts: 10

PostPosted: Mon Mar 11, 2013 8:06 pm    Post subject: Reply with quote

Comme tu dis .... :roll: :oops:
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 :twisted:
Back to top
View user's profile Send private message
bennyzzz
n00b
n00b


Joined: 25 Oct 2012
Posts: 10

PostPosted: Mon Mar 11, 2013 8:26 pm    Post subject: Reply with quote

Au fait tu as quoi comme USE flags ?
Back to top
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3193

PostPosted: Mon Mar 11, 2013 8:30 pm    Post subject: Reply with quote

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 :wink:

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
View user's profile Send private message
bennyzzz
n00b
n00b


Joined: 25 Oct 2012
Posts: 10

PostPosted: Mon Mar 11, 2013 8:57 pm    Post subject: Reply with quote

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
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3193

PostPosted: Mon Mar 11, 2013 9:47 pm    Post subject: Reply with quote

Aïe...(20pts de plus au tensiomètre) : "la gentoo que eux fournissent" càd leur "Release 2" ? :twisted:

Je parle de la différence de stockage des certificats /var/lib chez toi non ? et je crois que tu testais en root aussi ?

~off: heuu vu le prompt et le message d'erreur : tu testes loggé en user "mysql" qui gère le démon là (rapport aux droits spécifiques qui sont peut-être incompatibles) ?
(plus haut, je parlais juste de prendre un user lambda client de la base au départ)
Je déconne mais si en plus on prend un user "Root" pour tester je vais avoir mal au crâne... :p (root (real) / root "mysql" / user "Root" / ...)
_________________
" 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
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3193

PostPosted: Tue Mar 12, 2013 9:19 am    Post subject: Reply with quote

Je reposte car je viens de penser à autre chose qui pourrai jouer vu que tu utilises des conteneurs et autres :
est-ce que pour ton dernier essai tu ne serais pas dans un chroot ?
D'après la faq openssl et les droits sur /dev/urandom il ne devrait pas y avoir de pb sauf si tu es dans un chroot et que /dev/urandom est "vide" i.e. - d'où pas assez de données randomisées causant l'échec de création du certificat.
_________________
" 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
View user's profile Send private message
bennyzzz
n00b
n00b


Joined: 25 Oct 2012
Posts: 10

PostPosted: Wed Mar 13, 2013 10:47 am    Post subject: Reply with quote

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 .... :roll:
Back to top
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3193

PostPosted: Wed Mar 13, 2013 11:28 am    Post subject: Reply with quote

Il doit bien avoir un râté qqpart et en refaisant la séquence point par point au calme tu vas trouver :wink: c'est souvent une chose qui creve les yeux et qu'on oublie de faire/vérifier/recontrôler parce qu'on est certain de son coup - c'est pourquoi je t'ai mis ma séquence de travail en espérant que tu vois plus facilement ce qui cloche.

Sinon je t'ai indiqué quelques points de vérifications (pathways notamment) le restultat est-il identique ?
(et qu'en est-il de l'echec de génération du certificat ?)

btw, pour ovh alors on oubli le cas avec joie - sutrout si c'est comme pour leur apache et php - :lol:
_________________
" 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
View user's profile Send private message
bennyzzz
n00b
n00b


Joined: 25 Oct 2012
Posts: 10

PostPosted: Wed Mar 13, 2013 3:09 pm    Post subject: Reply with quote

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 :roll:
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum