Die Verschlüsselung zwischen Knoten (oder von Knoten zu Knoten) schützt Daten, die zwischen Knoten in einem Cluster übertragen werden, mithilfe von TLS. Auf dieser Seite wird erläutert, wie Sie die Cassandra-Verschlüsselung zwischen Knoten mit TLS in Edge for Private Cloud aktivieren. Für diese Schritte müssen Sie mit den Details Ihres Cassandra-Rings vertraut sein.
Cassandra-Verschlüsselung zwischen Knoten aktivieren
So aktivieren Sie die Cassandra-Verschlüsselung zwischen Knoten:
Generieren Sie Serverzertifikate. Folgen Sie dazu der Anleitung im Anhang , um einen selbst signierten Schlüssel und ein Zertifikat zu erstellen.
In den folgenden Schritten wird davon ausgegangen, dass Sie
keystore.node0undtruststore.node0sowie die Passwörter für den Keystore und den Truststore erstellt haben, wie im Anhang beschrieben. Der Keystore und der Truststore sollten als vorbereitende Schritte auf jedem Knoten erstellt werden, bevor Sie mit den nächsten Schritten fortfahren.- Fügen Sie der Datei
/opt/apigee/customer/application/cassandra.propertiesdie folgenden Eigenschaften hinzu. Wenn die Datei nicht vorhanden ist, erstellen Sie sie.conf_cassandra_server_encryption_internode_encryption=all conf_cassandra_server_encryption_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0 conf_cassandra_server_encryption_keystore_password=keypass conf_cassandra_server_encryption_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0 conf_cassandra_server_encryption_truststore_password=trustpass # Optionally set the following to enable 2-way TLS or mutual TLS conf_cassandra_server_encryption_require_client_auth=true - Prüfen Sie, ob die Datei
cassandra.propertiesdem Apigee-Nutzer gehört:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Führen Sie die folgenden Schritte auf jedem Cassandra-Knoten einzeln aus, damit die Änderungen wirksam werden, ohne dass es zu Ausfallzeiten für die Nutzer kommt:
- Beenden Sie den Cassandra-Dienst:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Starten Sie den Cassandra-Dienst neu:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Prüfen Sie in den Systemprotokollen, ob der TLS-Verschlüsselungsdienst gestartet wurde. Suchen Sie nach der folgenden Meldung:
Internode messaging enabled TLS protocols Internode messaging enabled cipher suites
Zertifikatrotation durchführen
So rotieren Sie Zertifikate:
- Fügen Sie das Zertifikat für jedes eindeutige generierte Schlüsselpaar (siehe Anhang) dem Truststore eines vorhandenen Cassandra-Knotens hinzu, sodass sowohl die alten als auch die neuen Zertifikate im selben Truststore vorhanden sind:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
Dabei ist
NEW_ALIASein eindeutiger String zur Identifizierung des Eintrags,CERTder Name der hinzuzufügenden Zertifikatsdatei undEXISTING_TRUSTSTOREder Name des vorhandenen Truststores auf dem Cassandra-Knoten. - Verwenden Sie ein Kopierprogramm wie „scp“, um den Truststore auf alle Cassandra-Knoten im Cluster zu verteilen und den vorhandenen Truststore zu ersetzen, der von jedem Knoten verwendet wird.
- Führen Sie einen rollierenden Neustart des Clusters durch, um den neuen Truststore zu laden und Vertrauen für die neuen Schlüssel herzustellen, bevor sie eingerichtet werden:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- Aktualisieren Sie auf jedem Cassandra-Knoten im Cluster die unten aufgeführten Eigenschaften in der Datei „cassandra.properties“ auf die neuen Keystore-Werte:
conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
Dabei ist
NEW_KEYSTORE_PATHder Pfad zum Verzeichnis, in dem sich die Keystore-Datei befindet, undNEW_KEYSTORE_PASSWORDdas Keystore-Passwort, das beim Erstellen der Zertifikate festgelegt wurde, wie im Anhang beschrieben. - Beenden Sie den Cassandra-Dienst:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Starten Sie den Cassandra-Dienst neu:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Wenn die Kommunikation zwischen allen Knoten erfolgreich hergestellt wurde, fahren Sie mit dem nächsten Cassandra-Knoten fort. Hinweis:Fahren Sie nur mit dem nächsten Knoten fort, wenn die Kommunikation zwischen allen Knoten erfolgreich hergestellt wurde.
Anhang
Im folgenden Beispiel wird erläutert, wie Sie Serverzertifikate vorbereiten, die für die Schritte zur Verschlüsselung zwischen Knoten erforderlich sind. Die in diesem Beispiel gezeigten Befehle verwenden die folgenden Parameter:
| Parameter | Beschreibung |
|---|---|
node0 |
Ein beliebiger eindeutiger String zur Identifizierung des Knotens. |
keystore.node0 |
Ein Keystore-Name. Bei den Befehlen wird davon ausgegangen, dass sich diese Datei im aktuellen Verzeichnis befindet. |
keypass |
Das Schlüsselpasswort muss für den Keystore und den Schlüssel identisch sein. |
dname |
Gibt die IP-Adresse von node0 als 10.128.0.39 an. |
-validity |
Der für dieses Flag festgelegte Wert macht das generierte Schlüsselpaar für 10 Jahre gültig. |
- Wechseln Sie zum folgenden Verzeichnis:
cd /opt/apigee/data/apigee-cassandra
- Führen Sie den folgenden Befehl aus, um im aktuellen Verzeichnis eine Datei mit dem Namen
keystore.node0zu generieren:keytool -genkey -keyalg RSA -alias node0 -validity 3650 \ -keystore keystore.node0 -storepass keypass \ -keypass keypass -dname "CN=10.128.0.39, OU=None, \ O=None, L=None, C=None"
Wichtig:Das Schlüsselpasswort muss mit dem Keystore-Passwort identisch sein.
- Exportieren Sie das Zertifikat in eine separate Datei:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- Achten Sie darauf, dass die Datei nur vom Apigee-Nutzer gelesen werden kann:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- Importieren Sie das generierte Zertifikat
node0.cerin den Truststore des Knotens:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
Mit dem obigen Befehl werden Sie aufgefordert, ein Passwort festzulegen. Dies ist das Truststore-Passwort und kann sich vom zuvor festgelegten Keystore-Passwort unterscheiden. Wenn Sie aufgefordert werden, dem Zertifikat zu vertrauen, geben Sie
yesein. - Verwenden Sie OpenSSL, um eine PEM-Datei des Zertifikats ohne Schlüssel zu generieren. Beachten Sie, dass
cqlshnicht mit dem Zertifikat im generierten Format funktioniert.$ keytool -importkeystore -srckeystore keystore.node0 \ -destkeystore node0.p12 -deststoretype PKCS12 -srcstorepass \ keypass -deststorepass keypass $ openssl pkcs12 -in node0.p12 -nokeys -out node0.cer.pem \ -passin pass:keypass $ openssl pkcs12 -in node0.p12 -nodes -nocerts -out node0.key.pem -passin pass:keypass
- Kopieren Sie für die Verschlüsselung zwischen Knoten die
node0.cerDatei auf jeden Knoten und importieren Sie sie in den Truststore jedes Knotens.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Verwenden Sie
keytool -list, um nach Zertifikaten in den Keystore- und Truststore-Dateien zu suchen:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0