Le chiffrement entre nœuds (ou de nœud à nœud) protège les données circulant entre les nœuds d'un cluster à l'aide du protocole TLS. Cette page explique comment activer le chiffrement entre les nœuds Cassandra à l'aide de TLS on Edge pour Private Cloud. Pour effectuer ces étapes, vous devez connaître les détails de votre environnement Cassandra son anneau.
Activer le chiffrement entre les nœuds Cassandra
Pour activer le chiffrement entre les nœuds Cassandra, suivez la procédure ci-dessous sur tous les nœuds du
cluster. Vous devez distribuer les certificats publics de chaque nœud à l'ensemble des nœuds.
Ensuite, chaque nœud contiendra des certificats
node0.cer
, node1.cer
, etc. dans son truststore. Chaque nœud ne
contient sa propre clé privée
keystore. Par exemple, node0
ne contiendra que node0.pem
dans ses
keystore. Vous devez activer le chiffrement sur chaque nœud, un par un.
Pour activer le chiffrement entre les nœuds Cassandra, procédez comme suit:
Générez des certificats de serveur en suivant la procédure décrite dans l'annexe. pour créer une clé autosignée et le certificat.
Les étapes suivantes supposent que vous avez créé
keystore.node0
ettruststore.node0
, ainsi que les mots de passe keystore et truststore, comme expliqué dans l'annexe. Le keystore et le truststore doivent être créés en tant qu'étapes préliminaires sur chaque nœud avant de continuer avec les prochaines étapes.- Ajoutez les propriétés suivantes à
/opt/apigee/customer/application/cassandra.properties
. Si le fichier n'existe pas, créez-le.conf_cassandra_internode_encryption=all conf_cassandra_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0 conf_cassandra_keystore_password=keypass conf_cassandra_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0 conf_cassandra_truststore_password=trustpass # Optionally set the following to enable 2-way TLS or mutual TLS # conf_cassandra_require_client_auth=true
- Assurez-vous que le fichier
cassandra.properties
appartient à l'utilisateur Apigee:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Exécutez les étapes suivantes sur chaque nœud Cassandra, l'une après l'autre, pour que les modifications soient prises en compte. sans entraîner de temps d'arrêt pour les utilisateurs:
- Arrêtez le service Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Redémarrez le service Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Pour déterminer si le service de chiffrement TLS a démarré, recherchez le message suivant dans les journaux système:
Starting Encrypted Messaging Service on TLS port
Effectuer une rotation des certificats
Pour alterner des certificats, procédez comme suit:
- Ajoutez le certificat pour chaque paire de clés unique générée (voir l'annexe).
à un cluster Cassandra existant
le magasin de confiance du nœud, de sorte que les anciens et les nouveaux certificats existent dans le même
truststore:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
où
NEW_ALIAS
est une chaîne unique permettant d'identifier l'entrée,CERT
correspond à le nom du certificat fichier à ajouter etEXISTING_TRUSTSTORE
est le nom du Truststore existant sur le nœud Cassandra. - Utilisez un utilitaire de copie, tel que scp, pour distribuer le truststore à tous les nœuds Cassandra du cluster remplaçant le Truststore existant utilisé par chaque nœud.
- Effectuez un redémarrage progressif du cluster afin de charger le nouveau truststore et d'établir l'approbation pour le
nouvelles clés avant qu'elles ne soient mises en place:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- Sur chaque nœud Cassandra du cluster, remplacez les propriétés indiquées ci-dessous par le nouveau keystore.
dans le fichier cassandra.properties:
conf_cassandra_keystore=NEW_KEYSTORE_PATH conf_cassandra_keystore_password=NEW_KEYSTORE_PASSOWRD
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
- Redémarrez le service Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Une fois la communication établie entre tous les nœuds, passez à la Nœud Cassandra. Remarque:Ne passez au nœud suivant que si la communication réussit. entre tous les nœuds.
Annexe
L'exemple suivant explique comment préparer les certificats de serveur requis pour effectuer l'opération le chiffrement entre les nœuds. Les commandes présentées dans l'exemple utilisent les paramètres suivants:
Paramètre | Description |
---|---|
node0 |
Toute chaîne unique permettant d'identifier le nœud. |
keystore.node0 |
Nom du keystore. Les commandes supposent que ce fichier se trouve dans le répertoire actuel. |
keypass |
La transmission de clés doit être identique pour le keystore et la clé. |
dname |
Identifie l'adresse IP de node0 comme 10.128.0.39 . |
-validity |
La valeur définie pour cet indicateur rend la paire de clés générée valide pendant 10 ans. |
- Accédez au répertoire suivant:
cd /opt/apigee/data/apigee-cassandra
- Exécutez la commande suivante pour générer un fichier nommé
keystore.node0
dans le répertoire actuel: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"
Important:Assurez-vous que le mot de passe de la clé est identique à celui du keystore.
- Exportez le certificat dans un fichier distinct:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- Assurez-vous que le fichier est lisible uniquement par l'utilisateur Apigee et par personne d'autre:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- Importez le certificat généré
node0.cer
dans le Truststore du nœud:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
La commande ci-dessus vous demande de définir un mot de passe. Il s’agit du mot de passe Truststore et peut différent du mot de passe du keystore que vous avez défini précédemment. Si vous êtes invité à faire confiance au certificat, saisissez
yes
. - Utilisez OpenSSL pour générer un fichier PEM du certificat sans clé. Notez que
cqlsh
ne fonctionne pas avec le certificat au format généré.$ 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
- Pour le chiffrement de nœud à nœud, copiez le fichier
node0.cer
sur chaque nœud et importez-le au Truststore de chaque nœud.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Utilisez
keytool -list
pour rechercher les certificats dans les fichiers keystore et truststore:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0