Die Interknoten-Verschlüsselung (oder Knoten-zu-Knoten-Verschlüsselung) schützt Daten, die zwischen Knoten in einem Cluster übertragen werden. mit TLS. Auf dieser Seite wird erläutert, wie Sie die Cassandra-Internode-Verschlüsselung mit TLS in Edge für Private Cloud Um diese Schritte ausführen zu können, müssen Sie mit den Details Ihrer Cassandra-App vertraut sein. klingeln.
Cassandra-Zwischenknotenverschlüsselung aktivieren
So aktivieren Sie die Cassandra-Interknotenverschlüsselung:
Generieren Sie Serverzertifikate mithilfe der Schritte im Anhang. zum Erstellen eines selbst signierten Schlüssels und Zertifikat.
Bei den folgenden Schritten wird davon ausgegangen, dass Sie
keystore.node0
erstellt haben. undtruststore.node0
, sowie die Passwörter für den Schlüsselspeicher und den Truststore, wie im Anhang erläutert. Der Schlüsselspeicher und der Truststore sollten als erste Schritte auf jedem Knoten erstellt werden, bevor Sie fortfahren. mit den nächsten Schritten.- Fügen Sie dem
/opt/apigee/customer/application/cassandra.properties
die folgenden Attribute hinzu -Datei. 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
- Achten Sie darauf, dass die Datei
cassandra.properties
dem Apigee-Nutzer gehört:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Führen Sie die folgenden Schritte nacheinander auf jedem Cassandra-Knoten aus, damit die Änderungen wirksam werden ohne Ausfallzeiten für Nutzer zu verursachen:
- 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
- Um festzustellen, ob der TLS-Verschlüsselungsdienst gestartet wurde, suchen Sie in den Systemprotokollen nach der folgenden Nachricht:
Starting Encrypted Messaging Service on TLS port
Zertifikatsrotation durchführen
So rotieren Sie Zertifikate:
- Fügen Sie das Zertifikat für jedes eindeutig generierte Schlüsselpaar hinzu (siehe Anhang).
zu einer vorhandenen Cassandra-
Knoten-Truststore, sodass sowohl die alten als auch die neuen Zertifikate im selben
Truststore:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
Dabei ist
NEW_ALIAS
ein eindeutiger String zur Identifizierung des Eintrags,CERT
ist den Namen des Zertifikats hinzuzufügende Datei undEXISTING_TRUSTSTORE
der Name des vorhandenen Truststore auf dem Cassandra-Knoten ist. - Verwenden Sie ein Kopierdienstprogramm wie scp, um den Truststore auf alle Cassandra-Knoten im Cluster zu verteilen Dadurch wird der vorhandene Truststore ersetzt, der von jedem Knoten verwendet wird.
- Führen Sie einen rollierenden Neustart des Clusters durch, um den neuen Truststore zu laden und eine Vertrauensstellung für den
neue Schlüssel verwenden, bevor diese vorhanden sind:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- Aktualisieren Sie auf jedem Cassandra-Knoten im Cluster die unten gezeigten Attribute auf den neuen Schlüsselspeicher
in der Datei cassandra.properties angeben:
conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
where
NEW_KEYSTORE_PATH
is the path to the directory where the keystore file is located andNEW_KEYSTORE_PASSWORD
is the keystore password set when the certificates were created, as explained in the Appendix. - Stop the Cassandra service:
/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 fort. Cassandra-Knoten. Hinweis:Fahren Sie nur dann mit dem nächsten Knoten fort, wenn die Kommunikation erfolgreich ist. zwischen allen Knoten festgelegt.
Anhang
Im folgenden Beispiel wird erläutert, wie Serverzertifikate vorbereitet werden, die für die Ausführung der knotenübergreifende Verschlüsselung. Für die im Beispiel gezeigten Befehle werden die folgenden Parameter verwendet:
Parameter | Beschreibung |
---|---|
node0 |
Beliebiger eindeutiger String zur Identifizierung des Knotens. |
keystore.node0 |
Ein Schlüsselspeichername. Bei den Befehlen wird davon ausgegangen, dass sich diese Datei im aktuellen Verzeichnis befindet. |
keypass |
Der Keypass muss für den Schlüsselspeicher und den Schlüssel identisch sein. |
dname |
Gibt die IP-Adresse von node0 als 10.128.0.39 an. |
-validity |
Durch den für dieses Flag festgelegten Wert ist das generierte Schlüsselpaar zehn Jahre lang gültig. |
- Gehen 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.node0
zu 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:Achten Sie darauf, dass das Schlüsselpasswort mit dem Schlüsselspeicher-Passwort übereinstimmt.
- 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-Benutzer und von niemand anderem 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.cer
in 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 Passwort des Truststores. sich von dem Schlüsselspeicher-Passwort unterscheidet, das Sie zuvor festgelegt haben. Wenn Sie aufgefordert werden, dem Zertifikat zu vertrauen, Geben Sie
yes
ein. - Verwenden Sie openssl, um eine PEM-Datei des Zertifikats ohne Schlüssel zu generieren. Hinweis:
cqlsh
funktioniert nicht mit dem Zertifikat in dem generierten Format.$ 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 Knoten-zu-Knoten-Verschlüsselung die Datei
node0.cer
auf jeden Knoten und importieren Sie sie mit dem Truststore jedes Knotens verknüpft.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Verwenden Sie
keytool -list
, um in den Keystore- und Truststore-Dateien nach Zertifikaten zu suchen:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0