Heim  >  Artikel  >  Datenbank  >  Beispiel-Tutorial einer SSL-Verbindung

Beispiel-Tutorial einer SSL-Verbindung

零下一度
零下一度Original
2017-06-30 15:25:191856Durchsuche

MySQL 5.7--------Best Practice für SSL-Verbindung

1. Hintergrund

* In einer Produktionsumgebung ist Sicherheit immer ein nicht zu vernachlässigendes Thema, und die Datenbanksicherheit hat höchste Priorität, da alle Daten in der Datenbank gespeichert werden

* Wann Bei Verwendung einer unverschlüsselten Methode zur Verbindung mit der MySQL-Datenbank liegen alle im Netzwerk übertragenen Informationen im Klartext vor und können von jedem im Netzwerk abgefangen werden, wodurch möglicherweise vertrauliche Informationen verloren gehen. Bei der Übertragung vertraulicher Informationen (z. B. Passwörter) können Sie eine SSL-Verbindung verwenden.

* Wenn die -Version kleiner als 5.7.6 ist, folgen Sie der Methode MySQL 5.6 SSL-Konfiguration .

2. MySQL-Verbindungsmethode

* Steckdosenanschluss

* TCP-Nicht-SSL-Verbindung

* SSL-sichere Verbindung

* SSL + Passwort-Verbindung [Version > MySQL 5.7.5]

  * SSL + Passwort + Schlüsselverbindung

3. Einführung in SSL

* SSL bezieht sich auf SSL/TLS, was ein An Verschlüsselungsprotokoll für sichere Kommunikation in Computernetzwerken. Unter der Annahme, dass die Übertragung des Benutzers nicht über SSL erfolgt, wird sie im Klartext im Netzwerk übertragen, was Menschen mit Hintergedanken Möglichkeiten bietet. Daher ist SSL mittlerweile auf vielen Websites standardmäßig aktiviert, beispielsweise auf Facebook, Twitter, YouTube, Taobao usw.

4. Umgebung [SeLinux ausschalten]

* Systemumgebung

[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

* MySQL-Umgebung [MySQL 5.7-Installation Details wurden im vorherigen Kapitel vorgestellt]

Die Werte von have_openssl und have_ssl sind beide DEAKTIVIERT, was darauf hinweist SSL ist nicht aktiviert

[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. SSL-Konfiguration

* Verwenden Sie das integrierte Tool, um SSL zu generieren verwandte Dateien

[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'
-----
* Zeigen Sie die generierte SSL-Datei an
[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
* MySQL-Dienst neu starten
[root@MySQL ~]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS!
* Stellen Sie eine Verbindung zu MySQL her, um den SSL-Öffnungsstatus anzuzeigen

Die Werte von have_openssl und have_ssl sind beide JA, was darauf hinweist, dass SSL erfolgreich geöffnet wurde

mysql> show variables like 'have%ssl%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl  | YES   |
| have_ssl      | YES   |
+---------------+-------+
2 rows in set (0.03 sec)

6. SSL + Passwort-Verbindungstest

* Erstellen Sie einen Benutzer und geben Sie eine SSL-Verbindung an [ Nach MySQL 5.7 wird empfohlen, die Methode „Benutzer erstellen“ zum Erstellen eines Benutzers zu verwenden ]

mysql> create user 'ssl_test'@'%' identified by '123' require SSL;
Query OK, 0 rows affected (0.00 sec)
* Kennwortverbindungstest bestehen [ Standardmäßig wird die SSL-Verbindung verwendet. Sie müssen angeben, dass die Verbindung nicht verwendet werden soll SSL-Verbindung ]
[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)
* Verbindung über SSL + Verschlüsselungstest

SSL: Die verwendete Verschlüsselung ist DHE-RSA-AES256-SHA, was eine Verbindung über SSL bedeutet

[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 + Passwort + Schlüsselverbindung

* Benutzer erstellen und X509 [SSL+Passwort] angeben Schlüssel] Verbinden [ Nach MySQL 5.7 wird empfohlen, die Methode „Benutzer erstellen“ zum Erstellen von Benutzern zu verwenden ]

mysql> create user 'X509_test'@'%' identified by '123' require X509;
Query OK, 0 rows affected (0.00 sec)
* Passwort-Verbindungstest
[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'
* Verbindungstest über SSL + Chiffre
[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)
* über SSL + Passwort + Schlüsselverbindungstest

 SSL: Die verwendete Verschlüsselung ist DHE-RSA-AES256-SHA, was bedeutet, dass die Verbindung über SSL erfolgt

[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
--------------

Das obige ist der detaillierte Inhalt vonBeispiel-Tutorial einer SSL-Verbindung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn