La crittografia internodo (o da nodo a nodo) protegge i dati che viaggiano tra i nodi di un cluster utilizzando TLS. Questa pagina spiega come abilitare la crittografia internodo di Cassandra utilizzando TLS su Edge per il Private Cloud. Per eseguire questi passaggi, devi conoscere i dettagli del ring di Cassandra.
Abilitare la crittografia internodo di Cassandra
Svolgi i seguenti passaggi per abilitare la crittografia internodo di Cassandra:
Genera i certificati del server seguendo i passaggi riportati nell'appendice per creare una chiave e un certificato autofirmati.
I passaggi seguenti presuppongono che tu abbia creato
keystore.node0etruststore.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 ogni 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_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.propertiessia 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 diventino effettive senza causare tempi di inattività per gli utenti:
- Arresta 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 i log di sistema per il seguente messaggio:
Internode messaging enabled TLS protocols Internode messaging enabled cipher suites
Eseguire la rotazione dei certificati
Per ruotare i certificati:
- Aggiungi il certificato per ogni coppia di chiavi univoca generata (vedi Appendice) all'archivio attendibilità di un nodo Cassandra esistente, in modo che sia i vecchi certificati sia i nuovi certificati 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 file del certificato da aggiungere eEXISTING_TRUSTSTOREè il nome dell'archivio attendibilità esistente sul nodo Cassandra. - Utilizza un'utilità di copia, ad esempio scp, per distribuire l'archivio attendibilità a tutti i nodi Cassandra nel cluster, sostituendo l'archivio attendibilità esistente in uso da ogni nodo.
- Esegui un riavvio graduale del cluster per caricare il nuovo archivio attendibilità e stabilire l'attendibilità delle nuove chiavi prima che vengano implementate:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- Su ogni nodo Cassandra nel cluster, aggiorna le proprietà mostrate di seguito ai nuovi valori dell'archivio chiavi nel file cassandra.properties:
conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
dove
NEW_KEYSTORE_PATHè il percorso della directory in cui si trova il file dell'archivio chiavi eNEW_KEYSTORE_PASSWORDè la password dell'archivio chiavi impostata durante la creazione dei certificati, come spiegato nell'appendice. - Arresta 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
- Quando la comunicazione viene stabilita correttamente tra tutti i nodi, passa al nodo Cassandra successivo. Nota: passa al nodo successivo solo se la comunicazione viene stabilita correttamente tra tutti i nodi.
Appendice
L'esempio seguente spiega come preparare i certificati del server necessari per eseguire i passaggi di crittografia internodo. I comandi mostrati nell'esempio utilizzano i seguenti parametri:
| Parametro | Descrizione |
|---|---|
node0 |
Qualsiasi stringa univoca per identificare il nodo. |
keystore.node0 |
Un nome dell'archivio chiavi. I comandi presuppongono che questo file si trovi nella directory corrente. |
keypass |
La password della chiave 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 valida la coppia di chiavi generata per 10 anni. |
- Vai alla seguente directory:
cd /opt/apigee/data/apigee-cassandra
- Esegui il comando seguente per generare un file denominato
keystore.node0nella directory corrente: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 sia la stessa della password 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.cernell'archivio attendibilità del nodo:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
Il comando precedente ti chiede di impostare una password. Questa è la password dell'archivio attendibilità e può essere diversa dalla password dell'archivio chiavi impostata in precedenza. Se ti viene chiesto di considerare attendibile il certificato, inserisci
yes. - Utilizza openssl per generare un file PEM del certificato senza chiavi. Tieni presente che
cqlshnon 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.cerin ogni nodo e importalo nell'archivio attendibilità di ogni nodo.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Utilizza
keytool -listper verificare la presenza di certificati nei file dell'archivio chiavi e dell'archivio attendibilità:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0