Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So aktivieren Sie SSL/TLS für MySQL in Ubuntu

MySQL ermöglicht es Benutzern, sich mithilfe von SSL/TLS-Zertifikaten sicher mit Datenbanken zu verbinden. In diesem Artikel betrachten wir die MySQL-SSL-Konfiguration – wie man SSL/TLS für MySQL in Ubuntu aktiviert.


So aktivieren Sie SSL/TLS für MySQL

Hier sind die Schritte zum Einrichten von SSL-Verbindungen in MySQL.


1. Installieren Sie MySQL

Öffnen Sie das Terminal und führen Sie die folgenden Befehle aus, um MySQL zu installieren.

$ sudo apt-get update
$ sudo apt-get install mysql-client

Bonus-Lesevorgang:MySQL-Änderung der Sortierung aller Tabellen


2. Prüfen Sie den SSL-Status

Melden Sie sich als root bei MySQL an

$ mysql -uroot -p

Sie werden nach dem Root-Passwort gefragt. Geben Sie nach der Anmeldung den folgenden Befehl ein, um den aktuellen SSL/TLS-Status zu ermitteln

mysql> SHOW VARIABLES LIKE '%ssl%';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
| ssl_ca        |          |
| ssl_capath    |          |
| ssl_cert      |          |
| ssl_cipher    |          |
| ssl_crl       |          |
| ssl_crlpath   |          |
| ssl_key       |          |
+---------------+----------+

Sie werden feststellen, dass have_openssl und have_ssl beide haben den Wert DISABLED. Das bedeutet, dass SSL in MySQL nicht aktiviert ist.

Bonus-Lesung:Top-Datenbank-Blogs, denen Sie folgen sollten


3. Generieren Sie SSL/TLS-Zertifikate

Als nächstes müssen wir SSL/TLS-Zertifikate generieren und den MySQL-Server auf ihre Standorte verweisen. Typischerweise verwenden Leute openssl, um SSL-Zertifikate zu generieren, und verschieben sie dann nach /var/lib/mysql, dem Standardspeicherort von SSL-Dateien für den MySQL-Server.

MySQL 5.7 und spätere Versionen werden jedoch bereits mit einem Dienstprogramm mysql_ssl_rsa_setup ausgeliefert, um diesen Prozess zu vereinfachen. Es generiert SSL-Zertifikate und speichert sie unter /var/lib/mysql.

Da wir den mysql-Prozess benötigen, um diese Dateien lesen zu können, erstellen wir mysql als Eigentümer dieser Dateien, wie unten gezeigt.

Führen Sie den folgenden Befehl aus, um SSL-Zertifikate zu generieren

$ sudo mysql_ssl_rsa_setup --uid=mysql

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

Sie können die generierten Dateien überprüfen, indem Sie den folgenden Befehl ausführen

$ ls -all /var/lib/mysql/*.pem

Sie werden etwa Folgendes sehen

256740      4 -rw-r--r--   1 mysql    mysql        1078 May 1 12:24 /var/lib/mysql/server-cert.pem
   256735      4 -rw-------   1 mysql    mysql        1675 May 1 12:24 /var/lib/mysqlsql/ca-key.pem
   256739      4 -rw-r--r--   1 mysql    mysql         451 May 1 12:24 /var/lib/mysqlsql/public_key.pem
   256741      4 -rw-------   1 mysql    mysql        1689 May 1 12:24 /var/lib/mysqlsql/client-key.pem
   256737      4 -rw-r--r--   1 mysql    mysql        1064 May 1 12:24 /var/lib/mysqlsql/ca.pem
   256743      4 -rw-r--r--   1 mysql    mysql        1048 May 1 12:24 /var/lib/mysqlsql/client-cert.pem
   256736      4 -rw-------   1 mysql    mysql        1625 May 1 12:24 /var/lib/mysqlsql/private_key.pem
   256738      4 -rw-------   1 mysql    mysql        1615 May 1 12:24 /var/lib/mysqlsql/server-key.pem

Dies sind die SSL-Zertifikatsdatei und die privaten Schlüsselpaare für die Zertifizierungsstelle, den MySQL-Server und den MySQL-Client.

Bonuslektüre:Die besten MySQL-Workbench-Alternativen


4. Aktivieren Sie SSL-Verbindungen in MySQL Server

Starten Sie als Nächstes MySQL Server neu, um SSL/TLS in MySQL zu aktivieren.

$ sudo systemctl restart mysql 

MySQL Server sucht beim Start automatisch nach SSL-Zertifikatsdateien in /var/lib/mysql. Sie müssen ihren Speicherort also nicht manuell in der MySQL-Konfigurationsdatei angeben.

Bonuslektüre:So aktivieren Sie den MySQL-Abfrage-Cache


5. Überprüfen Sie die SSL-Verbindung

Melden Sie sich wie zuvor (Schritt 2) bei MySQL an und führen Sie den folgenden Befehl aus.

SHOW VARIABLES LIKE '%ssl%';
Output
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+

Jetzt finden Sie have_openssl und have_ssl Variablen sind JA. Sie werden auch diese ssl_ca sehen , ssl_cert und ssl_key werden mit entsprechenden Werten gefüllt.

Sie können auch Ihre Verbindungsdaten überprüfen.

mysql> \s

-------------- 
. . . 
SSL: Cipher in use is DHE-RSA-AES256-SHA 
. . . 
Connection: 127.0.0.1 via TCP/IP 
. . . 
--------------


6. Konfigurieren Sie SSL für die Remote-Verbindung (optional)

Wenn Ihr MySQL-Server eingehende Remote-Verbindungen hat, können Sie SSL für Remote-Verbindungen aktivieren und es sogar obligatorisch machen, indem Sie die MySQL-Server-Konfigurationsdatei ändern.

Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus, um die MySQL-Konfiguration zu öffnen.

$ sudo vi /etc/mysql/my.cnf

Fügen Sie den [mysqld]-Codeblock wie gezeigt unter den beiden !includedir-Anweisungen hinzu.

!includedir /etc/mysql/conf.d/ 
!includedir /etc/mysql/mysql.conf.d/ 

[mysqld] 
# Require clients to connect either using SSL 
# or through a local socket file 
require_secure_transport = ON
bind-address = 0.0.0.0

In der letzten Zeile haben wir bind-address auf 0.0.0.0 gesetzt, um Remote-Verbindungen zuzulassen. Sie müssen es nicht hinzufügen, wenn Sie bereits Remote-Verbindungen aktiviert haben.

Starten Sie MySQL Server neu, um die Änderungen zu übernehmen. Von nun an benötigt MySQL SSL.

Vergessen Sie bei Remote-Verbindungen bitte nicht, Port 443 anstelle des Standardports 3306 zu öffnen. Dies liegt daran, dass SSL-Verbindungen über Port 443 und nicht über Port 3306 erfolgen.

Hoffentlich hilft Ihnen dieser Artikel dabei, die SSL/TLS-Verbindung in MySQL zu aktivieren.