Hinweis :Dieser Artikel geht davon aus, dass Sie MySQL® auf Ihrem Server installiert und konfiguriert haben.
SSL für MySQL aktivieren
Bevor Sie Ihr SSL-Zertifikat in Ihrer MySQL-Datenbank installieren, sichern und entfernen Sie die Standardzertifikatsdateien. Sie können für diesen Schritt einen eigenen Verzeichnisnamen wählen. Dieses Beispiel verwendet die mysql-backup-certs Verzeichnis. Wechseln Sie zum Ausführen der folgenden Schritte zum Root-Benutzer.
-
Erstellen Sie ein neues Backup-Verzeichnis:
mkdir -p ~/mysql-backup-certs/
-
Gehen Sie zu /var/lib/mysql Verzeichnis und verschieben Sie jedes Standardzertifikat in Ihr neu erstelltes Backup-Verzeichnis:
cd /var/lib/mysql mv ca.pem ca-key.pem ~/mysql-backup-certs/ mv server-key.pem server-cert.pem ~/mysql-backup-certs/ mv client-key.pem client-cert.pem ~/mysql-backup-certs/ mv private_key.pem public_key.pem ~/mysql-backup-certs/
-
Starten Sie MySQL neu, indem Sie einen der folgenden Befehle ausführen:
service mysqld restart
oder
systemctl restart mysqld
-
Verwenden Sie einen der folgenden Befehle, um
mysqld
zu überprüfen Zustand:service mysqld status
oder
systemctl status mysqld
-
Überprüfen Sie den SSL-Status innerhalb der MySQL-Shell. Melden Sie sich dazu als Root-Benutzer bei MySQL an:
mysql -u root -p (Enter MySQL root password)
-
Führen Sie die folgende Abfrage aus, um den SSL-Status in MySQL zu überprüfen:
SHOW GLOBAL VARIABLES LIKE '%ssl%'; STATUS;
Hinweis :Sie müssen keine Großbuchstaben verwenden. Das Beispiel verwendet sie, um die Befehlssyntax von dem zu unterscheiden, was Sie abfragen.
Im vorherigen Befehl möchten Sie den SSL-Status als deaktiviert sehen , und der Root-Benutzer wird ohne SSL verbunden.
-
Um die SSL-Verbindung mit unserem eigenen Zertifikat zu aktivieren, bearbeiten Sie die my.cnf Datei führen Sie einen der folgenden Befehle aus:
vim /etc/my.cnf
oder
nano /etc/my.cnf
-
Finden Sie [mysqld] Abschnitt und fügen Sie die folgenden Konfigurationseinstellungen hinzu:
# You will use your own SSL certificates directory for these. The following are examples only. ssl-ca=/etc/pki/tls/certs/ca.pem ssl-cert=/etc/pki/tls/certs/server-cert.pem ssl-key=/etc/pki/tls/private/server-key.pem
-
Speichern und beenden Sie die Datei. Starten Sie dann MySQL neu, indem Sie einen der folgenden Befehle ausführen:
service mysqld restart
oder
systemctl restart mysqld
-
Melden Sie sich nach dem Sichern von MySQL wieder bei der MySQL-Shell an:
mysql -u root -p (Enter MySQL root password)
-
Führen Sie die SSL-Abfrage erneut aus:
SHOW VARIABLES LIKE '%ssl%'; STATUS;
-
Wenn der SSL-Abschnittswert yes anzeigt , ist SSL für MySQL aktiviert. Sie sehen jedoch immer noch, dass der Root-Benutzer nicht über SSL verbunden ist. Das ist normal. Wenn Sie dies ändern möchten, können Sie alle localhost-Benutzerverbindungen zwingen, SSL zu verwenden. Sie müssen die my.cnf bearbeiten Datei erneut, indem Sie einen der folgenden Befehle ausführen:
vim /etc/my.cnf
oder
nano /etc/my.cnf
-
Geben Sie am Ende folgende Konfiguration ein:
[client] ssl-ca=/etc/pki/tls/certs/ca.pem ssl-cert=/etc/pki/tls/certs/client-cert.pem ssl-key=/etc/pki/tls/private/client-key.pem
-
Starten Sie MySQL neu. Nachdem MySQL wiederhergestellt ist, melden Sie sich erneut bei der MySQL-Shell an:
mysql -u root -p (Enter MySQL root password)
-
Führen Sie die folgende Abfrage erneut aus:
SHOW VARIABLES LIKE '%ssl%'; STATUS;
Wenn Sie nur SSL-Verbindungen von localhost-Verbindungen aktivieren möchten, sind Sie fertig. Wenn Sie jedoch auch Remotelogins für MySQL aktivieren möchten, lesen Sie weiter.
Remote-Verbindungen für MySQL aktivieren
Die folgenden Anweisungen aktivieren Remoteverbindungen für MySQL. Außerdem benötigen diese Remote-Benutzer Zertifikatsdateien, die von Ihrer Zertifizierungsstelle (CA) signiert wurden, um eine Verbindung herzustellen.
Dieses Beispiel bezeichnet (durch Verwendung von drei Sternchen:***
) die Einstellung zum Erzwingen der CA-Signatur, wenn Sie Remote-Verbindungen ohne die CA zulassen möchten.
-
Verwenden Sie Ihren bevorzugten Befehlszeilen-Texteditor, um /etc/my.cnf zu bearbeiten Datei erneut:
vim /etc/my.cnf
oder
nano /etc/my.cnf
-
Fügen Sie Folgendes am Ende von [mysqld] ein Abschnitt:
bind-address = * require_secure_transport = ON ***
-
Speichern und beenden Sie die Datei mit
:wq
. -
Starten Sie MySQL neu. Bestätigen Sie, dass MySQL wieder läuft. Sie müssen sich erneut bei der MySQL-Shell anmelden.
-
Nachdem Sie sich angemeldet haben, erstellen Sie den Benutzer, indem Sie einen der folgenden Befehle ausführen:
CREATE USER 'example'@'%' IDENTIFIED BY 'password';
oder
CREATE USER 'example'@'%' IDENTIFIED BY 'password' REQUIRE X509; ***
-
Nachdem Sie diesem Benutzer die Berechtigungen für die Datenbanken erteilt haben, für die er Berechtigungen haben soll, leeren Sie die Berechtigungen, um die MySQL-Berechtigungen innerhalb der Shell zu aktualisieren:
flush privileges;
Sie haben vielleicht bemerkt, dass der %
befindet sich hinter dem @
Symbol im vorhergehenden create user
Befehl bezeichnet den Benutzer eigentlich als entfernten Benutzer.
Wenn Sie einen Benutzer haben, der nur von einer statischen IP-Adresse auf MySQL zugreift, können Sie als Bonus diese IP-Adresse anstelle von %
eingeben um diesem Benutzer den Zugriff auf MySQL von seiner spezifischen IP-Adresse aus zu ermöglichen. Beachten Sie jedoch, dass der Benutzer nur von dieser IP-Adresse aus auf die Datenbank zugreifen kann. Wenn sich ihre IP-Adresse ändert, haben sie keinen Zugriff mehr. Aus diesem Grund verwenden die meisten Administratoren die allgemeine Remote-Einstellung von %
stattdessen.
Sie haben jetzt SSL-Verbindungen sowie den Fernzugriff auf Ihre MySQL-Datenbank aktiviert.