Mit SSL/TLS-Zertifikaten autorisieren

Auf dieser Seite wird beschrieben, wie Sie Secure Socket Layer (SSL, jetzt Transport Layer Security, TLS) in Ihrer Anwendung verwenden, um Verbindungen zu Cloud SQL-Instanzen zu verschlüsseln.

Übersicht

Cloud SQL unterstützt den Verbindungsaufbau zu einer Instanz mit dem SSL/TLS-Protokoll. SSL/TLS-Verbindungen bieten eine Sicherheitsebene, da die Daten während der Übertragung zwischen Ihrem Client und der Datenbank in Ihrer Cloud SQL-Instanz verschlüsselt werden. Optional kann Ihre SSL/TLS-Verbindung die Serveridentität prüfen, indem das auf der Cloud SQL-Instanz installierte Serverzertifikat validiert wird, und die Clientidentität, indem das auf dem Client installierte Clientzertifikat validiert wird.

Serverzertifikate

Wenn Sie eine Instanz erstellen, wird in Cloud SQL automatisch ein Serverzertifikat erstellt und installiert, das von einer Zertifizierungsstelle signiert ist. Sie können das CA-Zertifikat auf den Clienthostcomputer herunterladen und damit die CA- und Server-Cloud SQL-Identität überprüfen. Optional können Sie die Art der Zertifizierungsstelle auswählen, die Cloud SQL zum Signieren des Serverzertifikats verwendet.

Clientzertifikate

Optional können Sie Clientzertifikate zusammen mit Schlüsseln auf den Hostcomputer des Clients für die gegenseitige Authentifizierung (Server- und Clientidentitätsbestätigung) erstellen und herunterladen. Sie können nicht den Typ der Zertifizierungsstelle auswählen, die Cloud SQL zum Signieren des Clientzertifikats verwendet.

Verbindung über SSL/TLS herstellen

Wenn Sie von Clients eine Verbindung zu einer Cloud SQL-Instanz herstellen, können Sie SSL/TLS sowohl für direkte Verbindungen als auch für Verbindungen mit dem Cloud SQL Auth-Proxy oder den Cloud SQL Language Connectors verwenden.

  • Für direkte Verbindungen empfiehlt Google dringend, die SSL/TLS-Verschlüsselung mithilfe der Einstellung „SSL-Modus“ in Cloud SQL zu erzwingen. Optional können Sie auch die Überprüfung von Clientzertifikaten erzwingen. Weitere Informationen finden Sie unter SSL/TLS-Verschlüsselung erzwingen.

  • Verbindungen, die den Cloud SQL Auth-Proxy oder Cloud SQL Language Connectors verwenden, werden automatisch mit SSL/TLS verschlüsselt und die Client- und Serveridentität wird überprüft, ohne dass Sie ein Server-CA-Zertifikat und ein Clientzertifikat herunterladen müssen.

Weitere Informationen zu den Cloud SQL-Verbindungsoptionen finden Sie unter Cloud SQL-Verbindungen.

Weitere Informationen zur clientseitigen SSL/TLS-Konfiguration finden Sie in der Dokumentation zu Ihrer Datenbank-Engine.

Hierarchien von Zertifizierungsstellen

In diesem Abschnitt werden die beiden Arten von Server-Zertifizierungsstellen beschrieben, die Sie für Ihre Cloud SQL-Instanzen auswählen können. Es stehen zwei Optionen zur Verfügung:

  • Zertifizierungsstelle pro Instanz: Bei dieser Option signiert eine interne Zertifizierungsstelle, die jeder Cloud SQL-Instanz zugewiesen ist, das Serverzertifikat für diese Instanz. Diese Zertifizierungsstellen werden von Cloud SQL erstellt und verwaltet. Wenn Sie einen pro Instanz gültigen Zertifizierungsanbieter auswählen möchten, geben Sie beim Erstellen der Instanz GOOGLE_MANAGED_INTERNAL_CA für die Einstellung serverCaMode (Cloud SQL Admin API) oder das Flag --server-ca-mode (gcloud CLI) an. Wenn Sie die Einstellung oder das Flag nicht angeben, ist dies der Standardwert für die Instanz.
  • Gemeinsam genutzte Zertifizierungsstelle: Bei dieser Option wird eine Zertifizierungsstellenhierarchie mit einer Stamm-CA und untergeordneten Server-CAs verwendet. Die untergeordneten Server-CAs in einer Region signieren die Serverzertifikate und werden für alle Instanzen in der Region freigegeben. Cloud SQL hostet und verwaltet die Stamm-CA und die untergeordneten Server-CAs im Google Cloud Certificate Authority Service (CA Service). Cloud SQL kümmert sich auch um die Rotation der Stamm-CA und der untergeordneten Server-CAs und stellt öffentlich verfügbare Links zu den CA-Zertifikatsbundles zum Download bereit. Wenn Sie einen freigegebenen Zertifizierungsstellenanbieter auswählen möchten, geben Sie beim Erstellen der Instanz GOOGLE_MANAGED_CAS_CA für die Einstellung serverCaMode (Cloud SQL Admin API) oder das Flag --server-ca-mode (gcloud CLI) an.

Nachdem Sie eine Instanz erstellt haben, können Sie mit dem Befehl gcloud sql instances describe sehen, welche Zertifizierungshierarchie für eine Cloud SQL-Instanz konfiguriert ist. Weitere Informationen finden Sie unter Instanzinformationen aufrufen.

In der folgenden Tabelle werden die beiden CA-Hierarchieoptionen verglichen.

Feature Instanzspezifische Zertifizierungsstelle Gemeinsam genutzte Zertifizierungsstelle
CA-Struktur Separate Stammzertifizierungsstelle für jede Instanz Stamm-CA und untergeordnete CAs, die für Instanzen in derselben Region freigegeben sind
Kryptografische Attribute RSA-2048-Bit-Schlüssel mit SHA256-Algorithmus Elliptic Curve Digital Signature Algorithm (ECDSA) mit 384‑Bit-Schlüssel mit SHA384-Algorithmus
Gültigkeitsdauer der Zertifizierungsstelle 10 Jahre 25 Jahre für Stamm-CAs und 10 Jahre für untergeordnete CAs
Gültigkeitsdauer des Serverzertifikats 10 Jahre 1 Jahr
Vom Nutzer initiierte Rotation der Zertifizierungsstelle? Ja Nein. Die CA-Rotation wird von Cloud SQL verwaltet.
Wird die Rotation des Serverzertifikats vom Nutzer initiiert? Ja Ja
CA-Trust-Anchor für TLS-Verbindungen Die eindeutige Zertifizierungsstelle pro Instanz ist der Trust Anchor für die entsprechende Instanz. Die Stamm- und untergeordneten Zertifizierungsstellen sind die Trust Anchors für alle Instanzen in einer bestimmten Region.
Serveridentitätsbestätigung Durch die Überprüfung der Zertifizierungsstelle wird die Serveridentität überprüft, da jede Instanz eine eindeutige Zertifizierungsstelle hat. Die Überprüfung des Hostnamens und der Zertifizierungsstelle ist für die Überprüfung der Serveridentität erforderlich, da Server-Zertifizierungsstellen für alle Instanzen gemeinsam genutzt werden.
Feld „Subject Alternative Name“ (SAN) in Serverzertifikaten Das SAN-Feld enthält den Hostnamen (DNS-Namen der Instanz) nur für Instanzen, für die Private Service Connect aktiviert ist. Der Hostname kann zur Überprüfung der Serveridentität verwendet werden. Wenn Sie eine Verbindung zu einer Cloud SQL-Instanz herstellen und dabei den DNS-Namen als Hostnamen verwenden, müssen Sie die DNS-Auflösung einrichten. Das SAN-Feld enthält den Hostnamen (DNS-Namen der Instanz) für alle Arten von Instanzen. Der Hostname kann zur Überprüfung der Serveridentität verwendet werden. Wenn Sie eine Verbindung zu einer Cloud SQL-Instanz herstellen und dabei den DNS-Namen als Hostnamen verwenden, müssen Sie die DNS-Auflösung einrichten.

Von Cloud SQL gehosteter per-Instanz-Zertifikatsaussteller

Diese CA-Hierarchie ist die Standardkonfiguration für den CA-Modus des Servers.

Cloud SQL erstellt beim Erstellen einer Instanz eine neue selbst signierte Server-Zertifizierungsstelle für jede Instanz. Wenn Sie diese Einstellung verwenden möchten, konfigurieren Sie serverCaMode auf GOOGLE_MANAGED_INTERNAL_CA oder lassen Sie die Konfigurationseinstellung beim Erstellen der Instanz leer.

Das folgende Diagramm zeigt die CA-Hierarchie pro Instanz.

Diagramm der internen CA-Hierarchie pro Instanz.

Von CA Service gehostete freigegebene Zertifizierungsstellen

Dieser Server-CA-Modus besteht aus einer Stamm-CA und untergeordneten Server-CAs in jeder Region. Die untergeordneten Server-CAs stellen Serverzertifikate aus und werden für alle Instanzen in der Region freigegeben. Cloud SQL kümmert sich um die Rotation der freigegebenen regionalen Server-CAs und stellt öffentlich zugängliche Links zum Herunterladen der CA-Zertifikatsbundles bereit.

Sie können eine Instanz so konfigurieren, dass sie eine Server-Zertifizierungsstellehierarchie verwendet, bei der die ausstellenden Zertifizierungsstellen für alle Instanzen in derselben Region freigegeben werden. Wenn Sie diese Einstellung verwenden möchten, konfigurieren Sie serverCaMode beim Erstellen der Instanz auf GOOGLE_MANAGED_CAS_CA.

Das folgende Diagramm zeigt die Hierarchie der freigegebenen Zertifizierungsstelle.

Diagramm einer gemeinsamen Zertifizierungsstellenhierarchie

Rotation des Serverzertifikats

Cloud SQL bietet Möglichkeiten, das Serverzertifikat zu rotieren. So kann das neue Zertifikat nahtlos vor Ablauf des alten Zertifikats ersetzt werden.

Welcher Befehl zum Rotieren verwendet wird, hängt davon ab, ob Sie ein von einer Zertifizierungsstelle pro Instanz oder ein von der freigegebenen Zertifizierungsstelle ausgestelltes Serverzertifikat verwenden.

Etwa drei Monate vor Ablauf des Serverzertifikats für eine Cloud SQL-Instanz erhalten die Projektinhaber eine E-Mail von Cloud SQL, in der sie darüber informiert werden, dass die Zertifikatsrotation für diese Instanz begonnen hat. Die E-Mail enthält den Namen der Instanz und besagt, dass dem Projekt ein neues Serverzertifikat hinzugefügt wurde. Das vorhandene Serverzertifikat funktioniert weiterhin normal. Tatsächlich hat die Instanz während dieses Zeitraums zwei Serverzertifikate.

Laden Sie vor Ablauf des aktuellen Zertifikats die neue server-ca.pem-Datei herunter, die die Zertifikatsinformationen für das aktuelle und das neue Serverzertifikat enthält. Aktualisieren Sie Ihre MySQL-Clients so, dass die neue Datei verwendet wird. Dafür kopieren Sie sie auf alle MySQL-Client-Hostcomputer und ersetzen die vorhandene Datei.

Nachdem alle MySQL-Clients aktualisiert wurden, senden Sie einen Rotationsbefehl (für eine Instanz-spezifische Zertifizierungsstelle) oder einen Rotationsbefehl (für eine freigegebene Zertifizierungsstelle) an die Cloud SQL-Instanz, um zum neuen Serverzertifikat zu rotieren. Danach wird das alte Serverzertifikat nicht mehr erkannt und nur das neue Serverzertifikat kann verwendet werden.

Clientzertifikate sind von der Rotation des Serverzertifikats nicht betroffen.

Ablauf des SSL-Zertifikats

Standardmäßig verwenden Cloud SQL-Instanzen die Standardeinstellung GOOGLE_MANAGED_INTERNAL_CA als serverCaMode. Die SSL-Zertifikate haben eine Gültigkeitsdauer von zehn Jahren. Führen Sie vor Ablauf dieser Zertifikate eine CA-Rotation durch.

Bei Instanzen, die gemeinsame Zertifizierungsstellen verwenden (serverCaMode ist auf GOOGLE_MANAGED_CAS_CA festgelegt), beträgt die Gültigkeitsdauer der Serverzertifikate ein Jahr. Führen Sie vor Ablauf die SSL-Zertifikatsrotation durch. Das Zertifikat der Stammzertifizierungsstelle hat eine Gültigkeitsdauer von 25 Jahren und das untergeordnete gemeinsame CA-Zertifikat eine Gültigkeitsdauer von 10 Jahren. Die Rotation wird von Cloud SQL verwaltet.

Wenn ein Client so konfiguriert ist, dass die Zertifizierungsstelle oder der Hostname im Serverzertifikat überprüft wird, schlägt die Verbindung dieses Clients zu Cloud SQL-Instanzen mit abgelaufenen Serverzertifikaten fehl. Um Unterbrechungen von Clientverbindungen zu vermeiden, sollten Sie das Serverzertifikat vor Ablauf rotieren.

Unabhängig davon, ob Sie den CA-Servermodus pro Instanz oder den geteilten CA-Servermodus verwenden, können Sie die SSL-Konfiguration Ihrer Cloud SQL-Instanz jederzeit zurücksetzen.

Nächste Schritte