Abilita crittografia internode Cassandra

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

Per abilitare la crittografia internodi Cassandra, segui la procedura riportata di seguito su tutti i nodi in in un cluster Kubernetes. Devi distribuire i certificati pubblici di ciascun nodo a tutti i nodi. Dopodiché, ciascun nodo conterrà certificati node0.cer, node1.cer e così via nel relativo truststore. Ogni nodo contengono la propria chiave privata un archivio chiavi. Ad esempio, node0 conterrà solo node0.pem nel suo un archivio chiavi. Devi abilitare la crittografia su ciascun nodo, uno alla volta.

Segui questi passaggi per abilitare la crittografia internodi Cassandra:

  1. 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 e truststore.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.

  2. Aggiungi le seguenti proprietà a /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
  3. 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:

  1. Interrompi il servizio Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. Riavvia il servizio Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. 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:

  1. 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 e EXISTING_TRUSTSTORE è il nome del truststore esistente sul nodo Cassandra.

  2. 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.
  3. 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
  4. Su ogni nodo Cassandra nel cluster, aggiorna le proprietà mostrate di seguito al nuovo 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 and NEW_KEYSTORE_PASSWORD is the keystore password set when the certificates were created, as explained in the Appendix.

  5. Stop the Cassandra service:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  6. Riavvia il servizio Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. 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.
  1. Vai alla directory seguente:
    cd /opt/apigee/data/apigee-cassandra
  2. 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.

  3. Esporta il certificato in un file separato:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. 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
  5. 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.

  6. 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
  7. 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
  8. 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