A criptografia internós (ou nó para nó) protege os dados que trafegam entre os nós em um cluster usando TLS. Nesta página, explicamos como ativar a criptografia internode do Cassandra usando o TLS no Edge para nuvem privada. Para executar essas etapas, você precisa conhecer os detalhes do anel do Cassandra.
Ativar a criptografia interno do Cassandra
Siga estas etapas para ativar a criptografia de internode do Cassandra:
Gere certificados do servidor seguindo as etapas no Apêndice para criar uma chave e um certificado autoassinados.
As etapas a seguir presumem que você criou
keystore.node0
etruststore.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 para 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_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, um 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
Realizar a rotação de certificados
Para alternar certificados, siga estas etapas:
- Adicione o certificado de cada par de chaves exclusivo gerado (consulte o Apêndice)
a um truststore atual do nó do Cassandra, 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 atual no nó do Cassandra. - Use um utilitário de cópia, como o scp, para distribuir o truststore a 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 a confiança para as
novas chaves antes que elas sejam implantadas:
/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 de 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 entre todos eles for estabelecida.
Apêndice
O exemplo a seguir explica como preparar certificados de servidor necessários para executar as etapas de criptografia do internó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 presumem que esse arquivo esteja no diretório atual. |
keypass |
O keypass precisa ser o mesmo para o keystore e para a chave. |
dname |
Identifica o endereço IP de node0 como 10.128.0.39 . |
-validity |
O valor definido nessa sinalização torna o par de chaves gerado válido por 10 anos. |
- Acesse o seguinte diretório:
cd /opt/apigee/data/apigee-cassandra
- Execute este 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:a senha da chave precisa ser 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 por 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 definida anteriormente. Se for solicitado que você confie no certificado, insira
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
para 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 -list
para verificar certificados nos arquivos keystore e truststore:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0