Ajout doc création certificat + configuration instance mysql pour SSL / TLS
This commit is contained in:
parent
0e9c3abb54
commit
a0a1923dcf
102
HowtoMySQL.md
102
HowtoMySQL.md
|
@ -1786,6 +1786,108 @@ Il est possible de filtrer le type d'événements avec la variable `server_audit
|
|||
|
||||
La rotation des logs est automatique, mais personnalisable.
|
||||
|
||||
## Activé la connexion via SSL/TLS à la base de données
|
||||
|
||||
### Principe de fonctionnement
|
||||
|
||||
On génère une CA (clé privée et certificat) pour pouvoir signé une certificat serveur et client.
|
||||
|
||||
On ajoute le certificat serveur dans la configuration du serveur MySQL.
|
||||
|
||||
Le certificat client sert a se connecter au instances MySQL en SSL, soit avec PhpMyAdmin soit avec mysql-client, ou autres.
|
||||
|
||||
On par du principe qu'on l'on créer les clés / certificats dans _/etc/mysql/ssl_
|
||||
|
||||
### Création de la CA
|
||||
|
||||
On créé la CA comme ceci :
|
||||
|
||||
~~~
|
||||
# openssl genrsa 4096 > mysql-ca-key.pem
|
||||
# openssl req -new -x509 -nodes -days 365000 -key mysql-ca-key.pem -out mysql-ca-cert.pem
|
||||
~~~
|
||||
|
||||
### Création du certificat SSL serveur
|
||||
|
||||
On créé le certificat serveur comme ceci, ne général on mets comme Common Name le hostname du serveur :
|
||||
|
||||
~~~
|
||||
# openssl req -newkey rsa:2048 -days 365 -nodes -keyout mysql-server-key.pem -out mysql-server-req.pem
|
||||
# openssl rsa -in mysql-server-key.pem -out mysql-server-key.pem
|
||||
# openssl x509 -req -in mysql-server-req.pem -days 365 -CA mysql-ca-cert.pem -CAkey mysql-ca-key.pem -set_serial 01 -out mysql-server-cert.pem
|
||||
~~~
|
||||
|
||||
### Création du certificat SSL client
|
||||
|
||||
On créé le certificat client comme ceci, le Common Name est identique à celui du serveur :
|
||||
|
||||
~~~
|
||||
# openssl req -newkey rsa:2048 -days 365 -nodes -keyout mysql-client-key.pem -out mysql-client-req.pem
|
||||
# openssl rsa -in mysql-client-key.pem -out mysql-client-key.pem
|
||||
# openssl x509 -req -in mysql-client-req.pem -days 365 -CA mysql-ca-cert.pem -CAkey mysql-ca-key.pem -set_serial 01 -out mysql-client-cert.pem
|
||||
~~~
|
||||
|
||||
On vérifie la correspondance des certificats entre le certificat serveur et client comme ceci :
|
||||
|
||||
~~~
|
||||
# openssl verify -CAfile mysql-ca-cert.pem mysql-server-cert.pem mysql-client-cert.pem
|
||||
mysql-server-cert.pem: OK
|
||||
mysql-client-cert.pem: OK
|
||||
~~~
|
||||
|
||||
### Installation du certificat SSL serveur sur une instance MySQL
|
||||
|
||||
Il faut possitionner les bons droits sur les certificats comme ceci :
|
||||
|
||||
~~~
|
||||
# chown -Rv mysql:root /etc/mysql/ssl/
|
||||
~~~
|
||||
|
||||
Puis on mets cette configuration dans _/etc/mysql/mariadb.conf.d/zzz-evolinux-custom.cnf_
|
||||
|
||||
~~~
|
||||
# SSL
|
||||
ssl = on
|
||||
ssl-ca = /etc/mysql/ssl/mysql-ca-cert.pem
|
||||
ssl-cert = /etc/mysql/ssl/mysql-server-cert.pem
|
||||
ssl-key = /etc/mysql/ssl/mysql-server-key.pem
|
||||
ssl-cipher = AES256-SHA
|
||||
~~~
|
||||
|
||||
Un redémarrage de mysql / mariadb est necessaire :
|
||||
|
||||
~~~
|
||||
# systemctl restart mysql.service
|
||||
~~~
|
||||
|
||||
On peux vérifié que c'est bien pris en compte sur l'instance :
|
||||
|
||||
~~~
|
||||
mysql> show variables like '%ssl%';
|
||||
+--------------------+--------------------------------------+
|
||||
| Variable_name | Value |
|
||||
+--------------------+--------------------------------------+
|
||||
| have_openssl | YES |
|
||||
| have_ssl | YES |
|
||||
| mysqlx_ssl_ca | |
|
||||
| mysqlx_ssl_capath | |
|
||||
| mysqlx_ssl_cert | |
|
||||
| mysqlx_ssl_cipher | |
|
||||
| mysqlx_ssl_crl | |
|
||||
| mysqlx_ssl_crlpath | |
|
||||
| mysqlx_ssl_key | |
|
||||
| ssl_ca | /etc/mysql/ssl/mysql-ca-cert.pem |
|
||||
| ssl_capath | |
|
||||
| ssl_cert | /etc/mysql/ssl/mysql-server-cert.pem |
|
||||
| ssl_cipher | AES256-SHA |
|
||||
| ssl_crl | |
|
||||
| ssl_crlpath | |
|
||||
| ssl_fips_mode | OFF |
|
||||
| ssl_key | /etc/mysql/ssl/mysql-server-key.pem |
|
||||
+--------------------+--------------------------------------+
|
||||
17 rows in set (0.00 sec)
|
||||
~~~
|
||||
|
||||
## Optimisation avancée
|
||||
|
||||
Voir [/HowtoMySQL/Optimize]().
|
||||
|
|
Loading…
Reference in a new issue