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=mysqlGenerating 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.