« MySQL » : différence entre les versions
Ligne 124 : | Ligne 124 : | ||
subject=/C=FR/ST=Paris/L=Paris/O=NCad Network/OU=Intranet <br />Goulouxiou/CN=10.0.0.47/emailAddress=tech@ncad.fr<br /> | subject=/C=FR/ST=Paris/L=Paris/O=NCad Network/OU=Intranet <br />Goulouxiou/CN=10.0.0.47/emailAddress=tech@ncad.fr<br /> | ||
Getting CA Private Key }} | Getting CA Private Key }} | ||
=== Certificat client === | |||
{{ Box Information | objet=On va générer un certificat pour que la machine 10.0.0.44 puisse se connecter au serveur MySQL en utilisant le chiffrement SSL. }} | |||
* On génère la clé privée : | |||
{{ Box Console | objet=sudo openssl genrsa -out client.key 2048 }} | |||
* On génère un fichier de demande de signature de certificat : | |||
{{ Box Console | objet=<span style="font-family:sans-serif;color:blue">sudo openssl req -new -key client.key -out client.csr</span><br /> | |||
<font color=grey>You are about to be asked to enter information that will be incorporated<br /> | |||
into your certificate request.<br /> | |||
What you are about to enter is what is called a Distinguished Name or a DN.<br /> | |||
There are quite a few fields but you can leave some blank<br /> | |||
For some fields there will be a default value,<br /> | |||
If you enter '.', the field will be left blank.<br /> | |||
- - - - -<br /></font> | |||
Country Name (2 letter code) [AU]:<span style="font-family:sans-serif;color:blue">FR</span><br /> | |||
State or Province Name (full name) [Some-State]:<span style="font-family:sans-serif;color:blue">Paris</span><br /> | |||
Locality Name (eg, city) []:<span style="font-family:sans-serif;color:blue">Paris</span><br /> | |||
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<span style="font-family:sans-serif;color:blue">NCad Network</span><br /> | |||
Organizational Unit Name (eg, section) []:<span style="font-family:sans-serif;color:blue">Intranet Goulouxiou</span><br /> | |||
Common Name (e.g. server FQDN or YOUR name) []:<span style="font-family:sans-serif;color:blue">10.0.0.44</span><br /> | |||
Email Address []:<span style="font-family:sans-serif;color:blue">tech@ncad.fr</span><br /> | |||
<br /> | |||
Please enter the following 'extra' attributes<br /> | |||
to be sent with your certificate request<br /> | |||
A challenge password []:<span style="font-family:sans-serif;color:blue">N'importe quoi.</span><br /> | |||
An optional company name []:<span style="font-family:sans-serif;color:blue">NCad Network</span> }} | |||
* On signe notre certificat à l'aide du certificat auto-signé de notre autorité de certification ''(précédemment créée)'' : | |||
{{ Box Console | objet=<span style="font-family:sans-serif;color:blue">openssl x509 -req -in mysql.csr -days 365 -CA ca.crt -CAkey ca.key -set_serial 01 -out mysql.crt</span><br /> | |||
Signature ok<br /> | |||
subject=/C=FR/ST=Paris/L=Paris/O=NCad Network/OU=Intranet <br />Goulouxiou/CN=10.0.0.47/emailAddress=tech@ncad.fr<br /> | |||
Getting CA Private Key }} | |||
* Les fichiers '''client.crt''', '''client.key''' et '''ca.pem''' devront être copiés sur la machine cliente 10.0.0.44 dans notre cas. | |||
{{ Box Remarque | objet=On aurez pu tout aussi bien générer le certificat directement depuis le machine cliente. Dans ce cas, nous aurions eu seulement besoin de copier le fichier ca.pem pour signer le certificat nouvellement généré. }} | |||
=== Configuration du serveur MySQL === | === Configuration du serveur MySQL === |
Version du 5 février 2014 à 16:00
Installation
|
|
- À la question Nouveau mot de passe du superutilisateur MySQL, renseigner le mot de passe du compte root pour MySQL (indépendant du compte root UNIX)
- Éditer le fichier /etc/mysql/my.cnf puis rechercher la ligne bind-address et indiquer l'adresse IP local de la machine où est installé MySQL.
bind-address = 10.0.0.47
- Redémarrer le service mysql pour appliquer les changements :
|
|
- Première connexion au serveur avec le compte root :
|
|
Le compte root n'est accessible qu'en local uniquement. |
- On va créer l'utilisateur cacheln avec le mot de passe cacheln pouvant se connecter au compte depuis n'importe quelle machine (%) :
|
|
- On créer la base de données cacheln :
|
|
- On attribut tous les privilège à l'utilisateur cacheln sur la base de données cacheln :
|
|
SSL
- Vérifier votre version de Openssl avant de poursuivre :
|
|
La version 1.0.1c n'est pas supporté par MySQL. Il sera nécessaire d'installer une version antérieure pour poursuivre.
Autorité de certification
Création de la clé privée
- On se place dans le dossier /etc/ssl/private qui contient les clés et certificats privées :
|
|
- On génère la clé privée :
|
|
Cette clé va nous permettre de signer nos propres certificats.
Création du certificat auto-signé
- On lance la création de certificat auto-signé :
|
|
Certificat serveur
- On génère la clé privée :
|
|
- On génère un fichier de demande de signature de certificat :
|
|
- On signe notre certificat à l'aide du certificat auto-signé de notre autorité de certification (précédemment créée) :
|
|
Certificat client
|
On va générer un certificat pour que la machine 10.0.0.44 puisse se connecter au serveur MySQL en utilisant le chiffrement SSL. |
- On génère la clé privée :
|
|
- On génère un fichier de demande de signature de certificat :
|
|
- On signe notre certificat à l'aide du certificat auto-signé de notre autorité de certification (précédemment créée) :
|
|
- Les fichiers client.crt, client.key et ca.pem devront être copiés sur la machine cliente 10.0.0.44 dans notre cas.
On aurez pu tout aussi bien générer le certificat directement depuis le machine cliente. Dans ce cas, nous aurions eu seulement besoin de copier le fichier ca.pem pour signer le certificat nouvellement généré. |
Configuration du serveur MySQL
- On déplace les certificats crées dans /etc/ssl/private vers /etc/mysql/ssl
|
|
- On applique les permissions et droits mysql sur les certificats :
|
|
- On édite le fichier /etc/apparmor.d/usr.sbin.mysqld et on remplace :
/etc/mysql/*.pem r,
- Par :
/etc/mysql/ssl/*.pem r, /etc/mysql/ssl/*.crt r, /etc/mysql/ssl/*.key r,
- On redémarre le service apparmor pour appliquer les modifications :
|
|
- On édite le fichier de configuration /etc/mysql/my.cnf et on y dé-commente et adapte les lignes suivantes dans la section [mysqld] :
ssl-ca=/etc/mysq/ssl/ca.crt ssl-cert=/etc/mysql/ssl/mysql.crt ssl-key=/etc/mysql/ssl/mysql.key
- On redémarre le service mysql pour appliquer les modifications :
|
|
Validation
mysql -u root --ssl-ca=/etc/mysql/ssl/ca.pem --ssl-cert=/etc/mysql/ssl/client.crt --ssl-key=/etc/mysql/ssl/client.key -p
mysql> show variables like "%ssl%"; +---------------+--------------------------+ | Variable_name | Value | +---------------+--------------------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | /etc/mysq/ssl/ca.crt | | ssl_capath | | | ssl_cert | /etc/mysql/ssl/mysql.crt | | ssl_cipher | | | ssl_key | /etc/mysql/ssl/mysql.key | +---------------+--------------------------+ 7 rows in set (0.02 sec)
mysql> show status like 'Ssl_cipher'; +---------------+--------------------+ | Variable_name | Value | +---------------+--------------------+ | Ssl_cipher | DHE-RSA-AES256-SHA | +---------------+--------------------+ 1 row in set (0.01 sec)