Habilitar la encriptación de interno de Cassandra

La encriptación entre nodos (o de nodo a nodo) protege los datos que viajan entre nodos de un clúster. con TLS. En esta página, se explica cómo habilitar la encriptación de entrenudos de Cassandra con TLS en Edge para Nube privada. Para realizar estos pasos, debes conocer los detalles de tu Cassandra de Google.

Habilita la encriptación de nodos de Cassandra

Para habilitar la encriptación de nodos de Cassandra, sigue el procedimiento que aparece a continuación en todos los nodos de la clúster. Es necesario distribuir los certificados públicos de cada nodo entre todos los nodos. Después de hacerlo, cada nodo contendrá certificados node0.cer, node1.cer, etc., en su almacén de confianza. Cada nodo solo contienen su propia clave privada en su el almacén de claves. Por ejemplo, node0 solo contendrá node0.pem en su el almacén de claves. Debes habilitar la encriptación en cada nodo, uno a la vez.

Sigue estos pasos para habilitar la encriptación de nodos de Cassandra:

  1. Genera certificados de servidor siguiendo los pasos que se indican en el Apéndice para crear una clave autofirmada y un certificado.

    En los siguientes pasos, se supone que creaste keystore.node0 y truststore.node0, así como las contraseñas del almacén de claves y del almacén de confianza, como se explica en el Apéndice. El almacén de claves y el almacén de confianza se deben crear como pasos preliminares en cada nodo antes de continuar con los próximos pasos.

  2. Agrega las siguientes propiedades a /opt/apigee/customer/application/cassandra.properties. . Si el archivo no existe, créalo.
    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. Asegúrate de que el archivo cassandra.properties sea propiedad del usuario de Apigee:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties

Ejecuta los siguientes pasos en cada nodo de Cassandra, uno a la vez, para que se apliquen los cambios. sin causar tiempo de inactividad para los usuarios:

  1. Detén el servicio de Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. Reinicia el servicio de Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. Para determinar si se inició el servicio de encriptación TLS, busca el siguiente mensaje en los registros del sistema:
    Starting Encrypted Messaging Service on TLS port

Realiza la rotación del certificado

Para rotar los certificados, sigue estos pasos:

  1. Agrega el certificado para cada par de claves único generado (consulta el Apéndice). a una aplicación Cassandra existente en el almacén de confianza del nodo, de modo que los certificados antiguos y los nuevos existan en la misma almacén de confianza:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE

    donde NEW_ALIAS es una cadena única para identificar la entrada, CERT es el nombre del certificado archivo para agregar y EXISTING_TRUSTSTORE es el nombre del almacén de confianza existente en el nodo de Cassandra.

  2. Usa una utilidad de copia, como scp, para distribuir el almacén de confianza a todos los nodos de Cassandra en el clúster. en lugar del almacén de confianza existente que usa cada nodo.
  3. Realiza un reinicio progresivo del clúster para cargar el nuevo almacén de confianza y establecer la confianza para el claves nuevas antes de que se implementen:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. En cada nodo de Cassandra del clúster, actualiza las propiedades que se muestran a continuación al nuevo almacén de claves. en el archivo 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. Reinicia el servicio de Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. Cuando la comunicación se establezca correctamente entre todos los nodos, continúa con el siguiente Nodo de Cassandra. Nota: Solo puedes pasar al siguiente nodo si la comunicación se realiza correctamente. que se establecen entre todos los nodos.

Apéndice

En el siguiente ejemplo, se explica cómo preparar los certificados de servidor necesarios para realizar la pasos de encriptación de nodode. Los comandos que se muestran en el ejemplo usan los siguientes parámetros:

Parámetro Descripción
node0 Es cualquier cadena única para identificar el nodo.
keystore.node0 Un nombre de almacén de claves. Los comandos suponen que este archivo se encuentra en el directorio actual.
keypass El pase de claves debe ser el mismo para el almacén de claves y la clave.
dname Identifica la dirección IP de node0 como 10.128.0.39.
-validity El valor establecido en esta marca hace que el par de claves generado sea válido durante 10 años.
  1. Ve al siguiente directorio:
    cd /opt/apigee/data/apigee-cassandra
  2. Ejecuta el siguiente comando para generar un archivo llamado keystore.node0 en el directorio actual:
    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: Asegúrate de que la contraseña de la clave sea la misma que la del almacén de claves.

  3. Exporta el certificado a un archivo separado:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. Asegúrate de que solo el usuario de Apigee pueda leer el archivo y nadie más:
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. Importa el certificado generado node0.cer al almacén de confianza del nodo:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    El comando anterior te solicita que establezcas una contraseña. Esta es la contraseña del almacén de confianza y puede debe ser diferente de la contraseña del almacén de claves que configuraste antes. Si se te solicita confiar en el certificado, ingresa yes.

  6. Usa openssl para generar un archivo PEM del certificado sin claves. Ten en cuenta que cqlsh no funciona con el certificado en el formato generado.
    $ 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. Para la encriptación de nodo a nodo, copia el archivo node0.cer en cada nodo y, luego, impórtalo al almacén de confianza de cada nodo.
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. Usa keytool -list para verificar los certificados en los archivos de almacén de claves y almacén de confianza:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0