La crittografia tra nodi (o nodo a nodo) protegge i dati trasmessi tra i nodi in un cluster utilizzando TLS. Questa pagina spiega come abilitare la crittografia interno di Cassandra utilizzando TLS su Edge per il cloud privato. Per eseguire questi passaggi, devi conoscere i dettagli dell'anello Cassandra.
Abilita la crittografia internodo di Cassandra
Segui questi passaggi per attivare la crittografia degli internodi di Cassandra:
Genera certificati server seguendo i passaggi descritti nell'appendice per creare una chiave e un certificato autofirmati.
I passaggi seguenti presuppongono che tu abbia creato
keystore.node0
etruststore.node0
, nonché le password dell'archivio chiavi e dell'archivio attendibilità, come spiegato nell'Appendice. L'archivio chiavi e l'archivio attendibilità devono essere creati come passaggi preliminari su ciascun nodo prima di procedere con i passaggi successivi.- Aggiungi le seguenti proprietà al file
/opt/apigee/customer/application/cassandra.properties
. Se il file non esiste, crealo.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
- Assicurati che il file
cassandra.properties
sia di proprietà dell'utente apigee:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Esegui i passaggi seguenti su ogni nodo Cassandra, uno alla volta, in modo che le modifiche abbiano effetto senza causare tempi di inattività per gli 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 univoca generata (vedi l'Appendice) all'archivio di attendibilità di un nodo Cassandra esistente, in modo che sia i certificati precedenti sia i nuovi certificati esistano nello stesso archivio di 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 file del certificato da aggiungere eEXISTING_TRUSTSTORE
è il nome dell'archivio attendibilità esistente sul nodo Cassandra. - Utilizza un'utilità di copia, come scp, per distribuire l'archivio attendibilità a tutti i nodi Cassandra nel cluster, sostituendo l'archivio attendibilità esistente in uso da ciascun nodo.
- Esegui un riavvio in sequenza del cluster per caricare il nuovo archivio di attendibilità e stabilire l'attendibilità delle 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 con i nuovi valori dell'archivio chiavi
nel file 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
- Riavvia il servizio Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Una volta stabilita correttamente la comunicazione tra tutti i nodi, passa al nodo Cassandra successivo. Nota: passa al nodo successivo solo se la comunicazione tra tutti i nodi viene stabilita correttamente.
Appendice
L'esempio seguente spiega come preparare i certificati server necessari per eseguire i passaggi di crittografia interni. 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 |
Il keypass deve essere lo stesso 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 generato
node0.cer
nell'archivio attendibilità del nodo:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
Il comando riportato sopra ti chiede di impostare una password. Questa è la password dell'archivio chiavi e può essere diversa da quella dell'archivio chiavi che hai impostato in precedenza. Se viene richiesto di rendere 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 nell'archivio attendibilità di ciascun nodo.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Utilizza
keytool -list
per verificare la presenza di certificati nei file dell'archivio chiavi e dell'archivio attendibilità:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0