La crittografia tra nodi (o nodo a nodo) protegge i dati che viaggiano tra i nodi di un cluster utilizzando TLS. Questa pagina spiega come abilitare la crittografia internodi Cassandra utilizzando TLS su Edge per è un cloud privato. Per eseguire questi passaggi, devi conoscere i dettagli di Cassandra suonano.
Abilita la crittografia internodi Cassandra
Segui questi passaggi per abilitare la crittografia internodi Cassandra:
Genera i certificati server seguendo i passaggi nell'Appendice per creare una chiave autofirmata e certificato.
I passaggi seguenti presuppongono che tu abbia creato
keystore.node0
etruststore.node0
, nonché le password dell'archivio chiavi e dell'archivio chiavi, come spiegato nell'Appendice. L'archivio chiavi e l'archivio attendibili devono essere creati come passaggi preliminari su ciascun nodo prima di procedere con i passaggi successivi.- Aggiungi le seguenti proprietà a
/opt/apigee/customer/application/cassandra.properties
. Se il file non esiste, crealo.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
- Assicurati che il file
cassandra.properties
sia di proprietà dell'utente apigee:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Esegui i seguenti passaggi su ogni nodo Cassandra, uno alla volta, in modo che le modifiche vengano applicate senza causare tempi di inattività agli utenti:
- Interrompi il servizio Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Riavvia il servizio Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Per determinare se il servizio di crittografia TLS è stato avviato, controlla se nei log di sistema è presente il seguente messaggio:
Starting Encrypted Messaging Service on TLS port
Esegui la rotazione dei certificati
Per ruotare i certificati, segui questi passaggi:
- Aggiungi il certificato per ogni coppia di chiavi unica generata (vedi Appendice).
a un account Cassandra esistente
l'archivio di attendibilità del nodo, in modo che i vecchi certificati e quelli nuovi esistano nello stesso
archivio attendibilità:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
dove
NEW_ALIAS
è una stringa univoca per identificare la voce,CERT
è il nome del certificato file da aggiungere eEXISTING_TRUSTSTORE
è il nome del truststore esistente sul nodo Cassandra. - Usa un'utilità di copia, come scp, per distribuire il truststore a tutti i nodi Cassandra nel cluster sostituendo il truststore esistente in uso da ciascun nodo.
- Esegui un riavvio in sequenza del cluster per caricare il nuovo archivio attendibilità e stabilire l'attendibilità per il cluster
nuove chiavi prima che siano disponibili:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- Su ogni nodo Cassandra nel cluster, aggiorna le proprietà mostrate di seguito al nuovo archivio chiavi
nel file cassandra.properties:
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
- Riavvia il servizio Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Una volta stabilita correttamente la comunicazione tra tutti i nodi, procedi alla successiva Nodo Cassandra. Nota: passa al nodo successivo solo se la comunicazione è riuscita stabilito tra tutti i nodi.
Appendice
L'esempio seguente spiega come preparare i certificati del server necessari per eseguire le i passaggi della crittografia internodo. I comandi mostrati nell'esempio utilizzano i seguenti parametri:
Parametro | Descrizione |
---|---|
node0 |
Qualsiasi stringa univoca per identificare il nodo. |
keystore.node0 |
Il nome di un archivio chiavi. I comandi presuppongono che questo file si trovi nella directory corrente. |
keypass |
La password deve essere la stessa sia per l'archivio chiavi sia per la chiave. |
dname |
Identifica l'indirizzo IP di node0 come 10.128.0.39 . |
-validity |
Il valore impostato su questo flag rende la coppia di chiavi generata valida per 10 anni. |
- Vai alla directory seguente:
cd /opt/apigee/data/apigee-cassandra
- Esegui questo comando per generare un file denominato
keystore.node0
nella directory attuale: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"
Importante:assicurati che la password della chiave corrisponda a quella dell'archivio chiavi.
- Esporta il certificato in un file separato:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- Assicurati che il file sia leggibile solo dall'utente apigee e da nessun altro:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- Importa il certificato
node0.cer
generato nel truststore del nodo:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
Il comando precedente richiede di impostare una password. Si tratta della password dell'archivio attendibilità essere diversa dalla password dell'archivio chiavi che hai impostato in precedenza. Se viene richiesto di considerare attendibile il certificato, inserisci
yes
. - Utilizza Opensl per generare un file PEM del certificato senza chiavi. Tieni presente che
cqlsh
non funziona con il certificato nel formato generato.$ 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
- Per la crittografia da nodo a nodo, copia il file
node0.cer
su ciascun nodo e importalo al truststore di ciascun nodo.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Utilizza
keytool -list
per controllare i certificati nei file dell'archivio chiavi e dell'archivio chiavi:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0