Verschlüsseln von Clientverbindungen mit MySQL-DB-Instances mit SSL/TLS - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verschlüsseln von Clientverbindungen mit MySQL-DB-Instances mit SSL/TLS

Secure Sockets Layer (SSL) ist ein Branchen-Standardprotokoll, das für den Schutz von Netzwerkverbindungen zwischen Client und Server verwendet wird. Ab SSL-Version 3.0 wurde der Name in Transport Layer Security (TLS) geändert. Amazon RDS unterstützt SSL/TLS-Verschlüsselung für MySQL-DB-Instances. Durch die Verwendung von SSL/TLS können Sie eine Verbindung zwischen Ihrem Anwendungsclient und Ihrer MySQL-DB-Instance herstellen. SSL/TLS-Unterstützung ist in allen AWS-Regionen für MySQL verfügbar.

Verwenden von SSL/TLS mit einer MySQL-DB-Instance

Amazon RDS erstellt ein SSL-/TLS-Zertifikat und installiert das Zertifikat auf der DB-Instance, wenn Amazon RDS die Instance bereitstellt. Diese Zertifikate werden von einer Zertifizierungsstelle signiert. Das SSL-/TLS-Zertifikat enthält den DB-Instance-Endpunkt als allgemeinen Namen (Common Name, CN) für das SSL-/TLS-Zertifikat, um gegen Spoofing-Angriffe zu schützen.

Ein SSL/TLS-Zertifikat, das von Amazon RDS erstellt wurde, ist die vertrauenswürdige Root Entity und sollte in den meisten Fällen funktionieren, könnte jedoch fehlschlagen, wenn Ihre Anwendung keine Zertifikatsketten akzeptiert. Wenn Ihre Anwendung keine Zertifikatsketten akzeptiert, müssen Sie evtl. ein Zwischenzertifikat verwenden, um sich mit Ihrer AWS-Region zu verbinden. Beispielsweise müssen Sie ein Zwischenzertifikat verwenden, um sich mithilfe von SSL/TLS mit den Regionen AWS GovCloud (US) zu verbinden.

Informationen zum Herunterladen von Zertifikaten finden Sie unter . Weitere Informationen über die Verwendung von SSL/TLS mit MySQL finden Sie unter Aktualisieren von Anwendungen, um Verbindungen mit MySQL-DB-Instances mithilfe neuer SSL/TLS-Zertifikate herzustellen.

MySQL verwendet jetzt OpenSSL für sichere Verbindungen. Amazon RDS für MySQL unterstützt Transport Layer Security (TLS) Version 1.0, 1.1, 1.2 und 1.3. Die TLS-Unterstützung hängt von der MySQL-Version ab. In der folgenden Tabelle ist dargestellt, welche TLS-Versionen für die MySQL-Versionen unterstützt werden.

MySQL-Version TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3

MySQL 8.0

Nicht unterstützt

Nicht unterstützt

Unterstützt

Unterstützt

MySQL 5.7

Unterstützt

Unterstützt

Unterstützt

Nicht unterstützt

Sie können SSL/TLS-Verbindungen für bestimmte Benutzerkonten anfordern. Verwenden Sie beispielsweise eine der folgenden Anweisungen – abhängig von Ihrer MySQL-Version – um SSL-/TLS-Verbindungen für das Benutzerkonto erforderlich zu mache encrypted_user.

Verwenden Sie dazu die folgende Anweisung.

ALTER USER 'encrypted_user'@'%' REQUIRE SSL;

Weitere Informationen zu SSL/TLS-Verbindungen mit MySQL finden Sie unter Using Encrypted Connections in der MySQL-Dokumentation.

Erfordert SSL/TLS für alle Verbindungen zu einer MySQL-DB-Instance

Verwenden Sie den Parameter require_secure_transport, um zu verlangen, dass alle Benutzerverbindungen mit Ihrer MySQL-DB-Instance SSL/TLS verwenden. Standardmäßig ist der require_secure_transport-Parameter auf OFF festgelegt. Sie können den require_secure_transport-Parameter auf ON einstellen, so dass SSL/TLS für Verbindungen zu Ihrer DB-Instance erforderlich ist.

Sie können den Parameterwert require_secure_transport festlegen, indem Sie die DB-Parametergruppe für Ihre DB-Instance aktualisieren. Sie müssen Ihre DB-Instance nicht neu starten, damit die Änderung wirksam wird.

Wenn der require_secure_transport-Parameter auf ON für eine DB-Instance festgelegt ist, kann ein Datenbank-Client eine Verbindung zu ihr herstellen, wenn er eine verschlüsselte Verbindung aufbauen kann. Andernfalls wird eine Fehlermeldung ähnlich der folgenden an den Client zurückgegeben:

MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.

Weitere Informationen zum Festlegen von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe.

Weitere Informationen zu require_secure_transport-Parametern finden Sie in der MySQL-Dokumentation.

Herstellen einer Verbindung über den Befehlszeilenclient von MySQL mit SSL/TLS (verschlüsselt)

Die mysql-Client-Programmparameter unterscheiden sich geringfügig, wenn Sie die MySQL 5.7-Version, die MySQL 8.0-Version oder die MariaDB Version verwenden.

Um herauszufinden, welche Version Sie haben, führen Siemysql-Befehl mit --version-Option aus. Im folgenden Beispiel zeigt die Ausgabe, dass das Client-Programm von MariaDB stammt.

$ mysql --version mysql Ver 15.1 Distrib 10.5.15-MariaDB, for osx10.15 (x86_64) using readline 5.1

Die meisten Linux-Distributionen wie Amazon Linux, CentOS, SUSE und Debian haben MySQL durch MariaDB ersetzt, und diemysqlVersion in ihnen ist von MariaDB.

Führen Sie die folgenden Schritte aus, um mithilfe von SSL/TLS eine Verbindung mit Ihrer DB-Instance herzustellen:

So stellen Sie mithilfe des MySQL-Befehlszeilenclients eine SSL/TLS-Verbindung mit einer DB-Instance her
  1. Laden Sie ein Root-Zertifikat herunter, das für alle AWS-Regionen funktioniert.

    Informationen zum Herunterladen von Zertifikaten finden Sie unter .

  2. Verwenden Sie einen MySQL-Befehlszeilen-Client, um eine Verbindung zu einer DB-Instance mit SSL/TLS-Verschlüsselung herzustellen. Ersetzen Sie für den -h-Parameter den DNS-Namen (Endpunkt) für Ihre primäre DB-Instance. Ersetzen Sie für den --ssl-ca-Parameter den Dateinamen des SSL/TLS-Zertifikats. Ersetzen Sie für den -P-Parameter den Port für Ihre DB-Instance. Ersetzen Sie für den -u-Parameter den Benutzernamen eines gültigen Datenbankbenutzers, z. B. des Masterbenutzers. Geben Sie bei Aufforderung das Passwort für den Masterbenutzer ein.

    Im folgenden Beispiel sehen Sie für MySQL 5.7 und höher, wie der Client mit dem Parameter --ssl-ca gestartet wird.

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=REQUIRED -P 3306 -u myadmin -p

    Um erforderlich zu machen, dass die SSL/TLS-Verbindung den Endpunkt der DB-Instance mit dem Endpunkt im SSL/TLS-Zertifikat vergleicht, geben Sie den folgenden Befehl ein:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=VERIFY_IDENTITY -P 3306 -u myadmin -p

    Im folgenden Beispiel sehen Sie für MariaDB, wie der Client mit dem Parameter --ssl-ca gestartet wird.

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl -P 3306 -u myadmin -p
  3. Geben Sie bei Aufforderung das Passwort für den Masterbenutzer ein.

Die Ausgabe entspricht weitgehend der Folgenden.

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9738 Server version: 8.0.28 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>