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

MySQL-Tutorial – Konfigurieren und Verwalten von SSL auf Ihrem MySQL-Server

In diesem Blogpost besprechen wir einige der wichtigen Aspekte der Konfiguration und Verwaltung von SSL beim MySQL-Hosting. Dazu gehören die Standardkonfiguration, das Deaktivieren von SSL und das Aktivieren und Erzwingen von SSL auf einem MySQL-Server. Unsere Beobachtungen basieren auf der Community-Version von MySQL 5.7.21.

Standard-SSL-Konfiguration in MySQL

Standardmäßig installiert und aktiviert der MySQL-Server immer die SSL-Konfiguration. Es wird jedoch nicht erzwungen, dass Clients eine Verbindung über SSL herstellen. Clients können sich mit oder ohne SSL verbinden, da der Server beide Arten von Verbindungen zulässt. Sehen wir uns an, wie Sie dieses Standardverhalten des MySQL-Servers überprüfen können.

Wenn SSL standardmäßig auf dem MySQL-Server installiert und aktiviert ist, sehen wir normalerweise Folgendes:

  1. Vorhandensein von *.pem-Dateien im MySQL-Datenverzeichnis. Dies sind die verschiedenen Client- und Serverzertifikate und -schlüssel, die für SSL verwendet werden, wie hier beschrieben.
  2. Während des Serverstarts wird ein Hinweis in der mysqld-Fehlerprotokolldatei erscheinen, wie zum Beispiel:
    • [Anmerkung] ca.pem, server-cert.pem und server-key.pem im Datenverzeichnis gefunden. Versuch, die SSL-Unterstützung mit ihnen zu aktivieren.
  3. Der Wert der Variablen „have_ssl“ ist JA:

mysql> zeigt Variablen wie „have_ssl“;

+—————+——-+

| Variablenname | Wert |

+—————+——-+

| have_ssl      | JA |

+—————+——-+

Der MySQL-Client versucht standardmäßig immer, eine verschlüsselte Netzwerkverbindung mit dem Server herzustellen, und wenn dies fehlschlägt, fällt er auf den unverschlüsselten Modus zurück.

Also durch Verbindung zum MySQL-Server mit dem Befehl:

mysql -h -u -p

Mit dem Statusbefehl können wir überprüfen, ob die aktuelle Client-Verbindung verschlüsselt ist oder nicht:

mysql>-Status

————–

mysql  Ver 14.14 Distrib 5.7.21, für Linux (x86_64) mit  EditLine-Wrapper

Verbindungs-ID:         75

Aktuelle Datenbank:

Aktueller Benutzer:          [email protected]

SSL:                   Verwendete Verschlüsselung ist DHE-RSA-AES256-SHA

Aktueller Pager:         stdout

Outfile verwenden:         ”

Trennzeichen verwenden:       ;

Serverversion:        5.7.21-log MySQL Community Server (GPL)

Protokollversion:      10

Verbindung:             127.0.0.1 über TCP/IP

…………………………..

Das oben hervorgehobene SSL-Feld zeigt an, dass die Verbindung verschlüsselt ist. Wir können den MySQL-Client jedoch bitten, sich ohne SSL zu verbinden, indem wir den Befehl verwenden:

mysql -h -u   -p –ssl-mode=DEAKTIVIERT

 mysql>-Status

————–

Verbindungs-ID:         93

Aktuelle Datenbank:

Aktueller Benutzer:           [email protected]

SSL:                   Nicht verwendet

Aktueller Pager:         stdout

Outfile verwenden:         ”

Trennzeichen verwenden:       ;

Serverversion:        5.7.21-log MySQL Community Server (GPL)

Protokollversion:      10

Verbindung:             127.0.0.1 über TCP/IP

……………………………

Wir können sehen, dass wir ohne SSL eine Verbindung zu ihm herstellen können, obwohl SSL auf dem Server aktiviert ist.

MySQL-Tutorial – Konfigurieren und Verwalten von SSL auf Ihrem #MySQL-ServerClick To Tweet

SSL in MySQL deaktivieren

Wenn Sie SSL auf dem MySQL-Server anstelle der Standardoption „aktivierter, aber optionaler Modus“ vollständig deaktivieren möchten, können wir Folgendes tun:

  1.  Löschen Sie das *.pem-Zertifikat und die Schlüsseldateien im MySQL-Datenverzeichnis.
  2. Starten Sie MySQL mit deaktivierter SSL-Option. Dies kann durch Hinzufügen eines Zeileneintrags erfolgen:

ssl=0   in der Datei my.cnf.

 Das können wir beobachten:

  1. In den mysqld-Protokollen wird es KEINE Hinweise wie :
      geben
    • [Anmerkung] ca.pem, server-cert.pem und server-key.pem im Datenverzeichnis gefunden. Versuch, die SSL-Unterstützung mit ihnen zu aktivieren.
  2.  Der Wert der Variablen „have_ssl“ wird deaktiviert:

mysql> zeigt Variablen wie „have_ssl“;

+—————+——-+

| Variablenname | Wert |

+—————+——-+

| have_ssl      | DEAKTIVIERT |

+—————+——-+

SSL in MySQL erzwingen

Wir haben gesehen, dass SSL zwar standardmäßig auf dem MySQL-Server aktiviert war, aber nicht erzwungen wurde und wir immer noch ohne SSL eine Verbindung herstellen konnten.

Indem wir jetzt die Systemvariable require_secure_transport festlegen, können wir erzwingen, dass der Server nur SSL-Verbindungen akzeptiert. Dies kann überprüft werden, indem versucht wird, sich mit dem folgenden Befehl mit dem MySQL-Server zu verbinden:

mysql -h -u sgroot -p –ssl-mode=DISABLED

Und wir können sehen, dass die Verbindung mit folgender Fehlermeldung vom Server abgelehnt wird:

FEHLER 3159 (HY000):Verbindungen mit unsicherem Transport sind verboten, während –require_secure_transport=ON.

SSL-Überlegungen für Replikationskanäle

Standardmäßig verbinden sich in einer MySQL-Replikationskonfiguration die Slaves ohne Verschlüsselung mit dem Master.

Daher müssen Slaves MASTER_SSL=1; im Rahmen von „CHANGE MASTER TO“ Befehl, der Parameter für die Verbindung zum Master angibt. Bitte beachten Sie, dass diese Option auch obligatorisch ist, falls Ihr Master so konfiguriert ist, dass er eine SSL-Verbindung mit require_secure_transport erzwingt.