SSL/TLS-Zertifikate konfigurieren

Auf dieser Seite wird beschrieben, wie Sie eine Instanz für die Verwendung von SSL/TLS konfigurieren. Weitere Informationen zur Verwendung von SSL/TLS mit Cloud SQL.

Übersicht

Cloud SQL generiert automatisch ein Serverzertifikat (server-ca.pem), wenn Sie eine Instanz erstellen.

Für die Verwendung von SSL/TLS müssen Sie ein Clientzertifikat erstellen und die Zertifikate auf Ihren PostgreSQL-Clienthostcomputer herunterladen.

Wenn Sie Verbindungen über SSL/TLS herstellen möchten, sollten Sie erzwingen, dass alle Verbindungen SSL/TLS verwenden.

Sie müssen die Instanz nicht neu starten, nachdem Sie die SSL/TLS-Zertifikate geändert haben. Wenn ein Neustart erforderlich ist, erfolgt dieser Vorgang automatisch während des Ereignisses zur SSL-Aktualisierung.

SSL/TLS anfordern

Wenn SSL/TLS aktiviert sein muss, können Sie entweder den Cloud SQL Auth-Proxy oder SSL/TLS-Zertifikate verwenden, um eine Verbindung zu Ihrer Cloud SQL-Instanz herzustellen. Wenn Sie SSL/TLS nicht benötigen, können Clients ohne gültiges Zertifikat eine Verbindung herstellen.

So aktivieren Sie die Erfordernis von SSL/TLS:

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die entsprechende Übersicht zu öffnen.
  3. Klicken Sie im SQL-Navigationsmenü auf Verbindungen.
  4. Scrollen Sie nach unten zum Abschnitt Sicherheit.
  5. Klicken Sie auf Nur SSL-Verbindungen zulassen.

gcloud

gcloud sql instances patch INSTANCE_NAME
--require-ssl
  

REST Version 1

  1. Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • project-id: die Projekt-ID
    • instance-id: die Instanz-ID

    HTTP-Methode und URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

    JSON-Text anfordern:

    {
      "settings": {
        "ipConfiguration": {"requireSsl": "true"}
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

REST v1beta4

  1. Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • project-id: die Projekt-ID
    • instance-id: die Instanz-ID

    HTTP-Methode und URL:

    PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    JSON-Text anfordern:

    {
      "settings": {
        "ipConfiguration": {"requireSsl": "true"}
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

Serverzertifikate

Cloud SQL generiert automatisch ein Serverzertifikat, wenn Sie eine Instanz erstellen. Solange das Serverzertifikat gültig ist, müssen Sie keine Schritte zum Verwalten Ihres Serverzertifikats ausführen. Wenn das Ablaufdatum des Zertifikats nach zehn Jahren jedoch erreicht und überschritten wird, ist das Zertifikat ungültig und kann von den Clients nicht mehr verwendet werden, um eine sichere Verbindung zu Ihrer Instanz herzustellen. Sie werden benachrichtigt, wenn das Serverzertifikat bald abläuft. Die Benachrichtigungen werden an den folgenden Tagen vor dem Ablaufdatum gesendet: 90, 30, 10, 2 und 1.

Sie können Informationen zu Ihrem Serverzertifikat abrufen, z. B. wann es erstellt wurde und wann es abläuft. Außerdem haben Sie die Möglichkeit, manuell ein neues Zertifikat zu erstellen.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die entsprechende Übersicht zu öffnen.
  3. Klicken Sie im SQL-Navigationsmenü auf Verbindungen.
  4. Scrollen Sie nach unten zum Abschnitt Serverzertifikate verwalten.

    In der Tabelle sehen Sie das Ablaufdatum Ihres Serverzertifikats.

gcloud

  1. Rufen Sie Informationen zum Dienstzertifikat ab:
    gcloud beta sql ssl server-ca-certs list \
    --instance=INSTANCE_NAME
    
  2. Erstellen Sie ein Serverzertifikat:
    gcloud beta sql ssl server-ca-certs create \
    --instance=INSTANCE_NAME
    
  3. Laden Sie die Zertifikatsinformationen in eine lokale PEM-Datei herunter:
    gcloud beta sql ssl server-ca-certs list \
    --format="value(cert)" \
    --instance=INSTANCE_NAME > \
    FILE_PATH/FILE_NAME.pem
    
  4. Aktualisieren Sie alle Ihre Clients so, dass die neuen Informationen verwendet werden. Kopieren Sie hierzu die heruntergeladene Datei auf Ihre Client-Hostcomputer und ersetzen Sie die vorhandenen server-ca.pem-Dateien.

Clientzertifikate

Neues Clientzertifikat erstellen

Sie können für jede Instanz bis zu zehn Clientzertifikate erstellen. Wenn Sie den privaten Schlüssel für ein Zertifikat verlieren, müssen Sie einen neuen Schlüssel erstellen. Der private Schlüssel kann nicht wiederhergestellt werden. Das Clientzertifikat hat standardmäßig ein Ablaufdatum von 10 Jahren. Sie werden nicht benachrichtigt, wenn die Clientzertifikate bald ablaufen.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die entsprechende Übersicht zu öffnen.
  3. Klicken Sie im SQL-Navigationsmenü auf Verbindungen.
  4. Scrollen Sie nach unten zum Abschnitt Sicherheit.
  5. Klicken Sie auf Clientzertifikat erstellen.
  6. Geben Sie im Dialogfeld Clientzertifikat erstellen einen eindeutigen Namen ein.
  7. Klicken Sie auf Erstellen.
  8. Klicken Sie im ersten Abschnitt des Dialogfelds Neues SSL-Zertifikat erstellt auf client-key.pem herunterladen, um den privaten Schlüssel in eine Datei mit dem Namen client-key.pem herunterzuladen.
  9. Klicken Sie im zweiten Abschnitt auf client-cert.pem herunterladen, um das Clientzertifikat in eine Datei mit dem Namen client-cert.pem herunterzuladen.
  10. Klicken Sie im dritten Abschnitt auf server-ca.pem herunterladen, um das Serverzertifikat in eine Datei mit dem Namen server-ca.pem herunterzuladen.
  11. Klicken Sie auf Schließen.

gcloud

  1. Erstellen Sie mit dem Befehl ssl client-certs create ein Clientzertifikat:

    gcloud sql ssl client-certs create CERT_NAME client-key.pem \
    --instance=INSTANCE_NAME
    
  2. Rufen Sie den öffentlichen Schlüssel für das gerade erstellte Zertifikat ab und kopieren Sie ihn mit dem Befehl ssl client-certs describe in die Datei client-cert.pem:

    gcloud sql ssl client-certs describe CERT_NAME \
    --instance=INSTANCE_NAME \
    --format="value(cert)" > client-cert.pem
    
  3. Kopieren Sie das Serverzertifikat mit dem Befehl instances describe in die Datei server-ca.pem:

    gcloud sql instances describe INSTANCE_NAME \
    --format="value(serverCaCert.cert)" > server-ca.pem
    

REST Version 1

  1. Erstellen Sie ein SSL-/TLS-Zertifikat. Sein Name darf für diese Instanz nur einmal vorkommen:

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • project-id: die Projekt-ID
    • instance-id: die Instanz-ID
    • client-cert-name: der Name des Clientzertifikats

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts

    JSON-Text anfordern:

    {
      "commonName" : "client-cert-name"
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  2. Gehen Sie so vor, um den gesamten Zertifikatsinhalt innerhalb der Anführungszeichen (jedoch ohne die Anführungszeichen selbst) aus der Antwort in lokale Dateien zu kopieren:
    1. Kopieren Sie serverCaCert.cert in server-ca.pem.
    2. Kopieren Sie clientCert.cert in client-cert.pem.
    3. Kopieren Sie certPrivateKey in client-key.pem.

REST v1beta4

  1. Erstellen Sie ein SSL-/TLS-Zertifikat. Sein Name darf für diese Instanz nur einmal vorkommen:

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • project-id: die Projekt-ID
    • instance-id: die Instanz-ID
    • client-cert-name: der Name des Clientzertifikats

    HTTP-Methode und URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts

    JSON-Text anfordern:

    {
      "commonName" : "client-cert-name"
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  2. Gehen Sie so vor, um den gesamten Zertifikatsinhalt innerhalb der Anführungszeichen (jedoch ohne die Anführungszeichen selbst) aus der Antwort in lokale Dateien zu kopieren:
    1. Kopieren Sie serverCaCert.cert in server-ca.pem.
    2. Kopieren Sie clientCert.cert in client-cert.pem.
    3. Kopieren Sie certPrivateKey in client-key.pem.

Sie verfügen nun über die folgenden Elemente:

  • Ein Serverzertifikat, das als server-ca.pem gespeichert ist.
  • Ein Public-Key-Zertifikat des Clients, das als client-cert.pem gespeichert ist.
  • Einen privaten Schlüssel für den Client, der als client-key.pem gespeichert ist.
Je nachdem, welches Tool beim Verbindungsaufbau verwendet wird, werden diese drei Elemente auf unterschiedliche Weise angegeben. Wenn Sie zum Beispiel für den Verbindungsaufbau den psql-Befehlszeilenclient nutzen, sind diese drei Dateien die Werte für die Parameter sslrootcert, sslcert und sslkey im psql-Verbindungsstring. Ein Beispiel für den Verbindungsaufbau mit dem psql-Client und SSL/TLS finden Sie unter Mit dem psql-Client verbinden.

Nächste Schritte