A criptografia entre nós (ou nó para nó) protege os dados que trafegam entre nós em um cluster. usando TLS. Esta página explica como ativar a criptografia de entre nós do Cassandra usando TLS no Edge para de nuvem privada virtual. Para realizar essas etapas, você precisa conhecer os detalhes do seu Cassandra. anel
Ativar a criptografia entre nós do Cassandra
Siga estas etapas para ativar a criptografia entre nós do Cassandra:
Gere certificados do servidor seguindo as etapas do Apêndice para criar uma chave autoassinado e um certificado.
As etapas a seguir pressupõem que você criou
keystore.node0
etruststore.node0
, além das senhas do keystore e do truststore, conforme explicado no Apêndice. O keystore e o truststore devem ser criados como etapas preliminares em cada nó antes de prosseguir com as próximas etapas.- Adicione as seguintes propriedades ao
/opt/apigee/customer/application/cassandra.properties
. Crie o arquivo se ele não existir.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
- Verifique se o arquivo
cassandra.properties
pertence ao usuário da Apigee:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Execute as etapas a seguir em cada nó do Cassandra, uma de cada vez, para que as alterações entrem em vigor sem causar inatividade para os usuários:
- Interrompa o serviço do Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Reinicie o serviço do Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Para determinar se o serviço de criptografia TLS foi iniciado, procure a seguinte mensagem nos registros do sistema:
Starting Encrypted Messaging Service on TLS port
Executar a rotação de certificados
Para alternar certificados, siga estas etapas:
- Adicione o certificado para cada par de chaves exclusivo gerado (consulte o Apêndice).
a um Cassandra atual
o truststore do nó, de modo que os certificados antigos e os novos certificados existam no mesmo
truststore:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
em que
NEW_ALIAS
é uma string exclusiva para identificar a entrada,CERT
é o nome do certificado arquivo a ser adicionado eEXISTING_TRUSTSTORE
é o nome do truststore existente no nó do Cassandra. - Usar um utilitário de cópia, como o scp, para distribuir o truststore para todos os nós do Cassandra no cluster substituindo o truststore atual em uso por cada nó.
- Execute uma reinicialização gradual do cluster para carregar o novo truststore e estabelecer confiança para o
novas chaves antes que estejam em vigor:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- Em cada nó do Cassandra no cluster, atualize as propriedades mostradas abaixo para o novo keystore.
no arquivo 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
- Reinicie o serviço do Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Quando a comunicação for estabelecida entre todos os nós, prossiga para o próximo Nó do Cassandra. Observação:só prossiga para o próximo nó se a comunicação for bem-sucedida. estabelecida entre todos os nós.
Apêndice
O exemplo a seguir explica como preparar certificados de servidor necessários para realizar a etapas de criptografia entre nós diferentes. Os comandos mostrados no exemplo usam os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
node0 |
Qualquer string exclusiva para identificar o nó. |
keystore.node0 |
Um nome de keystore. Os comandos presumem que este arquivo está no diretório atual. |
keypass |
O keypass precisa ser o mesmo para o keystore e a chave. |
dname |
Identifica o endereço IP de node0 como 10.128.0.39 . |
-validity |
O valor definido nessa flag torna o par de chaves gerado válido por 10 anos. |
- Acesse o seguinte diretório:
cd /opt/apigee/data/apigee-cassandra
- Execute o seguinte comando para gerar um arquivo chamado
keystore.node0
no diretório atual: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:verifique se a senha da chave é a mesma do keystore.
- Exporte o certificado para um arquivo separado:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- Verifique se o arquivo pode ser lido apenas pelo usuário da Apigee e para ninguém mais:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- Importe o certificado gerado
node0.cer
para o truststore do nó:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
O comando acima solicita que você defina uma senha. Essa é a senha do truststore e pode ser diferente da senha do keystore que você definiu anteriormente. Se for solicitado que você confie no certificado, digite
yes
. - Use o openssl para gerar um arquivo PEM do certificado sem chaves. Observe que
cqlsh
não funciona com o certificado no formato gerado.$ 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 criptografia de nó para nó, copie o arquivo
node0.cer
em cada nó e importe-o ao truststore de cada nó.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Use
keytool -list
para verificar se há certificados nos arquivos keystore e truststore:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0