A criptografia entre nós (ou nó a nó) protege os dados que trafegam entre nós em um cluster usando TLS. Esta página explica como ativar a criptografia entre nós do Cassandra usando TLS no Edge para nuvem privada. Para executar essas etapas, você precisa conhecer os detalhes do anel do Cassandra.
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 no Apêndice para criar uma chave e um certificado autoassinados.
As etapas a seguir pressupõem que você criou
keystore.node0etruststore.node0, bem como as senhas do keystore e do truststore, conforme explicado no Apêndice. O keystore e o truststore precisam ser criados como etapas preliminares em cada nó antes de prosseguir com as próximas etapas.- Adicione as seguintes propriedades ao arquivo
/opt/apigee/customer/application/cassandra.properties. Se o arquivo não existir, crie-o.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 - Verifique se o arquivo
cassandra.propertiespertence ao usuário 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 mudanças entrem em vigor sem causar tempo de 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, verifique os registros do sistema em busca da seguinte mensagem:
Internode messaging enabled TLS protocols Internode messaging enabled cipher suites
Fazer a rotação do certificado
Para girar os certificados, siga estas etapas:
- Adicione o certificado de cada par de chaves gerado exclusivo (consulte o Apêndice) ao truststore de um nó do Cassandra existente, de modo que os certificados antigos e novos 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 arquivo de certificado a ser adicionado eEXISTING_TRUSTSTOREé o nome do truststore existente no nó do Cassandra. - Use um utilitário de cópia, como scp, para distribuir o truststore a todos os nós do Cassandra no cluster, substituindo o truststore em uso por cada nó.
- Faça uma reinicialização contínua do cluster para carregar o novo truststore e estabelecer confiança para as novas chaves antes que elas sejam instaladas:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- Em cada nó do Cassandra no cluster, atualize as propriedades mostradas abaixo para os novos valores do keystore no arquivo cassandra.properties:
conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
Em que
NEW_KEYSTORE_PATHé o caminho para o diretório em que o arquivo do keystore está localizado eNEW_KEYSTORE_PASSWORDé a senha do keystore definida quando os certificados foram criados, conforme explicado no Apêndice. - 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
- Quando a comunicação for estabelecida com sucesso 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 estabelecida com sucesso entre todos os nós.
Apêndice
O exemplo a seguir explica como preparar os certificados do servidor necessários para executar as etapas de criptografia entre nós. 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 pressupõem que esse arquivo esteja 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 comando a seguir 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 apigee e por mais ninguém:
$ 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 pede que você defina uma senha. Essa é a senha do truststore e pode ser diferente da senha do keystore definida anteriormente. Se for solicitado a confiar no certificado, insira
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ó a nó, copie o arquivo
node0.cerpara cada nó e importe-o para o 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 do keystore e do truststore:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0