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
Para ativar a criptografia entre nós do Cassandra, siga o procedimento abaixo em todos os nós na
aglomerado. Você precisa distribuir certificados públicos de cada nó para todos eles.
Depois disso, cada nó terá certificados
node0.cer, node1.cer etc. no truststore. Cada nó só vai
contém a própria chave privada
um repositório de chaves de acesso. Por exemplo, node0 conterá apenas node0.pem no
um repositório de chaves de acesso. Você precisa ativar a criptografia em cada nó, um de cada vez.
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.node0etruststore.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.propertiespertence 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_PATHis the path to the directory where the keystore file is located andNEW_KEYSTORE_PASSWORDis 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.node0no 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.cerpara 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
cqlshnã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.cerem cada nó e importe-o ao truststore de cada nó.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Use
keytool -listpara verificar se há certificados nos arquivos keystore e truststore:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0