La encriptación entre nodos (o de nodo a nodo) protege los datos que viajan entre los nodos de un clúster con TLS. En esta página, se explica cómo habilitar la encriptación entre nodos de Cassandra con TLS en Edge para la nube privada. Para seguir estos pasos, debes estar familiarizado con los detalles de tu anillo de Cassandra.
Habilita la encriptación entre nodos de Cassandra
Sigue estos pasos para habilitar la encriptación entre nodos de Cassandra:
Para generar certificados del servidor, sigue los pasos del Apéndice para crear una clave y un certificado autofirmados.
En los siguientes pasos, se supone que creaste
keystore.node0ytruststore.node0, así como las contraseñas del almacén de claves y del almacén de certificados de confianza, como se explica en el Apéndice. El almacén de claves y el almacén de certificados de confianza se deben crear como pasos preliminares en cada nodo antes de continuar con los siguientes pasos.- Agrega las siguientes propiedades al archivo
/opt/apigee/customer/application/cassandra.properties. Si el archivo no existe, créalo.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 - Asegúrate de que el archivo
cassandra.propertiessea 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 los cambios surtan efecto sin causar tiempo de inactividad para los usuarios:
- Detén el servicio de Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Reinicia el servicio de Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Para determinar si se inició el servicio de encriptación TLS, consulta los registros del sistema en busca del siguiente mensaje:
Internode messaging enabled TLS protocols Internode messaging enabled cipher suites
Realiza la rotación de certificados
Para rotar certificados, sigue estos pasos:
- Agrega el certificado para cada par de claves único generado (consulta el Apéndice) al almacén de certificados de confianza de un nodo de Cassandra existente, de modo que los certificados antiguos y los nuevos existan en el mismo almacén de certificados de confianza:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
En el que
NEW_ALIASes una cadena única para identificar la entrada,CERTes el nombre del archivo de certificado que se agregará yEXISTING_TRUSTSTOREes el nombre del almacén de certificados de confianza existente en el nodo de Cassandra. - Usa una utilidad de copia, como scp, para distribuir el almacén de confianza a todos los nodos de Cassandra del clúster y reemplazar el almacén de confianza existente que usa cada nodo.
- Realiza un reinicio progresivo del clúster para cargar el nuevo almacén de confianza y establecer la confianza para las claves nuevas antes de que estén en su lugar:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- En cada nodo de Cassandra del clúster, actualiza las propiedades que se muestran a continuación a los nuevos valores del almacén de claves en el archivo cassandra.properties:
conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
En el que
NEW_KEYSTORE_PATHes la ruta de acceso al directorio en el que se encuentra el archivo del almacén de claves yNEW_KEYSTORE_PASSWORDes la contraseña del almacén de claves establecida cuando se crearon los certificados, como se explica en el Apéndice. - Detén el servicio de Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Reinicia el servicio de Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Cuando se establezca la comunicación correctamente entre todos los nodos, continúa con el siguiente nodo de Cassandra. Nota: Solo continúa con el siguiente nodo si la comunicación se establece correctamente entre todos los nodos.
Apéndice
En el siguiente ejemplo, se explica cómo preparar los certificados del servidor necesarios para realizar los pasos de encriptación entre nodos. Los comandos que se muestran en el ejemplo usan los siguientes parámetros:
| Parámetro | Descripción |
|---|---|
node0 |
Cualquier cadena única para identificar el nodo. |
keystore.node0 |
Un nombre de almacén de claves. Los comandos suponen que este archivo está en el directorio actual. |
keypass |
El keypass 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 por 10 años. |
- Ve al siguiente directorio:
cd /opt/apigee/data/apigee-cassandra
- Ejecuta el siguiente comando para generar un archivo llamado
keystore.node0en 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 contraseña del almacén de claves.
- Exporta el certificado a un archivo independiente:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- Asegúrate de que el archivo solo pueda leerlo el usuario de apigee y nadie más:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- Importa el certificado generado
node0.ceral almacén de certificados de confianza del nodo:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
El comando anterior te pide que establezcas una contraseña. Esta es la contraseña del almacén de certificados de confianza y puede ser diferente de la contraseña del almacén de claves que estableciste antes. Si se te solicita que confíes en el certificado, ingresa
yes. - Usa OpenSSL para generar un archivo PEM del certificado sin claves. Ten en cuenta que
cqlshno 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
- Para la encriptación de nodo a nodo, copia el archivo
node0.ceren cada nodo y, luego, impórtalo al almacén de certificados de confianza de cada nodo.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Usa
keytool -listpara verificar los certificados en los archivos del almacén de claves y del almacén de certificados de confianza:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0