Maison > Article > base de données > Exemple de tutoriel de connexion SSL
MySQL 5.7--------Meilleures pratiques pour la connexion SSL
Contexte
* Dans un environnement de production, la sécurité est toujours un problème qui ne peut être ignoré, et la sécurité de la base de données est une priorité absolue, car toutes les données sont stockées dans la base de données
* Quand Lorsque vous utilisez une méthode non cryptée pour vous connecter à la base de données MySQL, toutes les informations transmises sur le réseau sont en texte clair et peuvent être interceptées par tous les utilisateurs du réseau, et des informations sensibles peuvent être divulguées. Lors de la transmission d'informations sensibles (telles que des mots de passe), vous pouvez utiliser une connexion SSL.
* Lorsque la version est inférieure à 5.7.6, suivez la méthode Configuration SSL MySQL 5.6 .
2. Méthode de connexion MySQL
* connexion prise
* Connexion TCP non SSL
* Connexion sécurisée SSL
* Connexion SSL + mot de passe [version > MySQL 5.7.5]
* SSL + mot de passe + connexion clé
3. Introduction à SSL
* SSL fait référence à SSL/TLS, qui est un An protocole de cryptage pour une communication sécurisée dans les réseaux informatiques. En supposant que la transmission de l'utilisateur ne se fasse pas via SSL, elle sera transmise en texte clair sur le réseau, ce qui offrira des opportunités aux personnes ayant des arrière-pensées. Par conséquent, de nombreux sites Web ont désormais activé SSL par défaut, comme Facebook, Twitter, YouTube, Taobao, etc.
4. Environnement [Désactiver SeLinux]
* environnement système
[root@MySQL ~]
# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@MySQL ~]
# uname -r
2.6.32-696.3.2.el6.x86_64
[root@MySQL ~]
# getenforce
Disabled
* Environnement MySQL [Installation MySQL 5.7 Les détails ont été introduits dans le chapitre précédent]
Les valeurs de have_openssl et have_ssl sont toutes deux DÉSACTIVÉES, indiquant que SSL n'est pas activé
[root@MySQL ~]
# mysql -p'123'
mysql: [Warning] Using a password on the
command
line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection
id
is 6
Server version: 5.7.18 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, 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>
select
version();
+-----------+
| version() |
+-----------+
| 5.7.18 |
+-----------+
1 row
in
set
(0.00 sec)
mysql> show variables like
'have%ssl%'
;
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
+---------------+----------+
2 rows
in
set
(0.02 sec)
mysql> show variables like
'port'
;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row
in
set
(0.01 sec)
mysql> show variables like
'datadir'
;
+---------------+-------------------+
| Variable_name | Value |
+---------------+-------------------+
| datadir |
/data/mysql_data/
|
+---------------+-------------------+
1 row
in
set
(0.01 sec)
5. Configuration SSL
* Utilisez l'outil intégré pour générer SSL fichiers associés
[root@MySQL ~]
# /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/data/mysql_data
Generating a 2048 bit RSA private key
..........................................................................+++
.....+++
writing new private key to
'ca-key.pem'
-----
Generating a 2048 bit RSA private key
.......................................................................................................................................................................+++
...+++
writing new private key to
'server-key.pem'
-----
Generating a 2048 bit RSA private key
.....................+++
...........................................+++
writing new private key to
'client-key.pem'
-----
[root@MySQL ~]
# ls -l /data/mysql_data/*.pem
-rw------- 1 root root 1679 Jun 24 20:54
/data/mysql_data/ca-key
.pem
-rw-r--r-- 1 root root 1074 Jun 24 20:54
/data/mysql_data/ca
.pem
-rw-r--r-- 1 root root 1078 Jun 24 20:54
/data/mysql_data/client-cert
.pem
-rw------- 1 root root 1675 Jun 24 20:54
/data/mysql_data/client-key
.pem
-rw------- 1 root root 1675 Jun 24 20:54
/data/mysql_data/private_key
.pem
-rw-r--r-- 1 root root 451 Jun 24 20:54
/data/mysql_data/public_key
.pem
-rw-r--r-- 1 root root 1078 Jun 24 20:54
/data/mysql_data/server-cert
.pem
-rw------- 1 root root 1675 Jun 24 20:54
/data/mysql_data/server-key
.pem
[root@MySQL ~]
# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
Les valeurs de have_openssl et have_ssl sont toutes deux OUI, indiquant que SSL est ouvert avec succès
mysql> show variables like
'have%ssl%'
;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl | YES |
| have_ssl | YES |
+---------------+-------+
2 rows
in
set
(0.03 sec)
6. Test de connexion SSL + mot de passe
* Créez un utilisateur et spécifiez une connexion SSL [ Après MySQL 5.7, il est recommandé d'utiliser la méthode create user pour créer un utilisateur ]
mysql> create user
'ssl_test'
@
'%'
identified by
'123'
require SSL;
Query OK, 0 rows affected (0.00 sec)
[root@MySQL ~]
# mysql -h 192.168.60.129 -ussl_test -p'123' --ssl=0
mysql: [Warning] Using a password on the
command
line interface can be insecure.
ERROR 1045 (28000): Access denied
for
user
'ssl_test'
@
'192.168.60.129'
(using password: YES)
SSL : le chiffrement utilisé est DHE-RSA-AES256-SHA signifie une connexion via SSL
[root@MySQL ~]
# mysql -h 192.168.60.129 -ussl_test -p'123' --ssl
mysql: [Warning] Using a password on the
command
line interface can be insecure.
WARNING: --ssl is deprecated and will be removed
in
a future version. Use --ssl-mode instead.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection
id
is 12
Server version: 5.7.18 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, 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.7.18,
for
linux-glibc2.5 (x86_64) using EditLine wrapper
Connection
id
: 12
Current database:
Current user: ssl_test@192.168.60.129
SSL: Cipher
in
use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile:
''
Using delimiter: ;
Server version: 5.7.18 MySQL Community Server (GPL)
Protocol version: 10
Connection: 192.168.60.129 via TCP
/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 7 min 34 sec
Threads: 1 Questions: 29 Slow queries: 0 Opens: 112 Flush tables: 1 Open tables: 105 Queries per second avg: 0.063
--------------
7 . SSL + Mot de passe + Connexion par clé
* Créez un utilisateur et spécifiez X509 [SSL+Mot de passe Clé] Connect [ Après MySQL 5.7, il est recommandé d'utiliser la méthode de création d'utilisateur pour créer des utilisateurs ]
mysql> create user
'X509_test'
@
'%'
identified by
'123'
require X509;
Query OK, 0 rows affected (0.00 sec)
[root@MySQL ~]
# mysql -h 192.168.60.129 -uX509_test -p'123' --ssl=0
mysql: [Warning] Using a password on the
command
🎜>line interface can be insecure.
ERROR 1045 (28000): Access denied
for
user
'X509_test'
[root@MySQL ~]
# mysql -h 192.168.60.129 -uX509_test -p'123' --ssl
mysql: [Warning] Using a password on the
command
line interface can be insecure.
ERROR 1045 (28000): Access denied
for
user
'X509_test'
@
'192.168.60.129'
(using password: YES)
SSL : le chiffrement utilisé est DHE-RSA-AES256-SHA signifie connexion via SSL
[root@MySQL ~]
# mysql -h 192.168.60.129 -uX509_test -p'123' --ssl-cert=/data/mysql_data/client-cert.pem --ssl-key=/data/mysql_data/client-key.pem
mysql: [Warning] Using a password on the
command
line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection
id
is 21
Server version: 5.7.18 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, 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.7.18,
for
linux-glibc2.5 (x86_64) using EditLine wrapper
Connection
id
: 21
Current database:
Current user: X509_test@192.168.60.129
SSL: Cipher
in
use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile:
''
Using delimiter: ;
Server version: 5.7.18 MySQL Community Server (GPL)
Protocol version: 10
Connection: 192.168.60.129 via TCP
/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 18 min 27 sec
Threads: 1 Questions: 40 Slow queries: 0 Opens: 118 Flush tables: 1 Open tables: 111 Queries per second avg: 0.036
--------------
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!