Le chiffrement entre les nœuds (ou de nœud à nœud) protège les données qui transitent 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 du protocole TLS sur Edge pour le cloud privé. Pour effectuer ces étapes, vous devez connaître les détails de votre anneau Cassandra.
Activer le chiffrement entre les nœuds Cassandra
Pour activer le chiffrement entre les nœuds Cassandra, procédez comme suit :
Générez des certificats de serveur en suivant les étapes de l'annexe pour créer une clé et un certificat autosignés.
Pour les étapes suivantes, nous partons du principe que vous avez créé
keystore.node0ettruststore.node0, ainsi que les mots de passe du keystore et du 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 passer aux étapes suivantes.- Ajoutez les propriétés suivantes au fichier
/opt/apigee/customer/application/cassandra.properties. Si le fichier n'existe pas, créez-le.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 - Assurez-vous que le fichier
cassandra.propertiesappartient à l'utilisateur apigee :chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Exécutez les étapes suivantes sur chaque nœud Cassandra, un à la fois, afin que les modifications prennent effet sans entraîner d'interruption 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 :
Internode messaging enabled TLS protocols Internode messaging enabled cipher suites
Effectuer une rotation des certificats
Pour effectuer une rotation des certificats, procédez comme suit :
- Ajoutez le certificat pour chaque paire de clés unique générée (voir l'annexe) au truststore d'un nœud Cassandra existant, 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_ALIASest une chaîne unique permettant d'identifier l'entrée,CERTest le nom du fichier de certificat à ajouter etEXISTING_TRUSTSTOREest 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, en remplaçant le truststore existant utilisé par chaque nœud.
- Effectuez un redémarrage progressif du cluster pour charger le nouveau truststore et établir une relation de confiance pour les nouvelles clés avant qu'elles ne soient en place :
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- Sur chaque nœud Cassandra du cluster, mettez à jour les propriétés indiquées ci-dessous avec les nouvelles valeurs du keystore dans le fichier cassandra.properties :
conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
où
NEW_KEYSTORE_PATHest le chemin d'accès au répertoire dans lequel se trouve le fichier keystore etNEW_KEYSTORE_PASSWORDest le mot de passe du keystore défini lors de la création des certificats, comme expliqué dans l'annexe. - 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
- Lorsque la communication est établie entre tous les nœuds, passez au nœud Cassandra suivant. Remarque : Ne passez au nœud suivant que si la communication est établie entre tous les nœuds.
Annexe
L'exemple suivant explique comment préparer les certificats de serveur nécessaires pour effectuer les étapes de 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 |
Le mot de passe de la clé doit être le même pour le keystore et la clé. |
dname |
Identifie l'adresse IP de node0 comme 10.128.0.39. |
-validity |
La valeur définie sur cette option 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.node0dans 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 ne peut être lu que par l'utilisateur apigee :
$ 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.cerdans 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 du truststore, qui peut être différent de celui du keystore que vous avez défini précédemment. Si vous êtes invité à approuver le certificat, saisissez
yes. - Utilisez OpenSSL pour générer un fichier PEM du certificat sans clé. Notez que
cqlshne 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
node0.cerfichier sur chaque nœud et importez-le dans le truststore de chaque nœud.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Utilisez
keytool -listpour rechercher des certificats dans les fichiers keystore et truststore :$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0