Maison  >  Article  >  base de données  >  Exemple de tutoriel de connexion SSL

Exemple de tutoriel de connexion SSL

零下一度
零下一度original
2017-06-30 15:25:191906parcourir

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'
-----
* Afficher le fichier SSL généré
[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
* Redémarrez le service MySQL
[root@MySQL ~]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS!
* Connectez-vous à MySQL pour afficher l'état d'ouverture SSL

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)
* Réussir le test de connexion par mot de passe [ La valeur par défaut est la connexion SSL, vous devez spécifier de ne pas utiliser de connexion SSL ]
[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)
* Connectez-vous via SSL + test de chiffrement

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)
* Test de connexion par mot de passe
[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'
* Test de connexion via SSL + chiffrement
[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)
* via SSL + Mot de passe + Test de connexion par clé

 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn