Szyfrowanie między węzłami (czyli między węzłami) chroni dane przesyłane między węzłami w klastrze. korzysta z protokołu TLS. Na tej stronie objaśniamy, jak włączyć szyfrowanie między węzłami Cassandra za pomocą protokołu TLS w Edge dla Chmura prywatna. Aby wykonać te czynności, musisz znać szczegóły dotyczące karty Cassandra włącz dzwonek.
Włącz szyfrowanie interwęzła Cassandra
Aby włączyć szyfrowanie między węzłami Cassandra, wykonaj te czynności:
Wygeneruj certyfikaty serwera, wykonując czynności opisane w Dodatku w celu utworzenia samodzielnie podpisanego klucza i certyfikat.
W poniższych krokach przyjęto założenie, że utworzona przez Ciebie jednostka:
keystore.node0
itruststore.node0
, a także hasła do magazynu kluczy i magazynu zaufania, co wyjaśniono w dodatku. Zanim przejdziesz dalej, utwórz magazyn kluczy i magazyn zaufania jako czynności wstępne z dalszymi krokami.- Dodaj do
/opt/apigee/customer/application/cassandra.properties
. Jeśli plik nie istnieje, utwórz go.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
- Sprawdź, czy plik
cassandra.properties
należy do użytkownika Apigee:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Wykonaj poniższe czynności na każdym węźle Cassandra (pojedynczo), aby zmiany zostały wprowadzone bez powodowania przestojów w działaniu usługi.
- Zatrzymaj usługę Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Ponownie uruchom usługę Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Aby sprawdzić, czy usługa szyfrowania TLS została uruchomiona, sprawdź dzienniki systemowe pod kątem tego komunikatu:
Starting Encrypted Messaging Service on TLS port
Wykonaj rotację certyfikatu
Aby przeprowadzić rotację certyfikatów, wykonaj te czynności:
- Dodaj certyfikat do każdej niepowtarzalnej wygenerowanej pary kluczy (patrz Dodatek).
na istniejącą kartę Cassandra,
magazyn zaufania węzła, tak aby stare i nowe certyfikaty znajdowały się w tym samym
magazyn zaufania:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
gdzie
NEW_ALIAS
jest unikalnym ciągiem znaków identyfikującym wpis,CERT
to nazwa certyfikatu plik do dodania iEXISTING_TRUSTSTORE
to nazwa istniejącego magazynu zaufania w węźle Cassandra. - Użyj narzędzia do kopiowania, takiego jak scp, aby rozdzielić magazyn zaufania na wszystkie węzły Cassandra w klastrze zastępując dotychczasowy magazyn zaufania używany przez każdy węzeł.
- Wykonaj kroczące ponowne uruchomienie klastra, aby wczytać nowy magazyn zaufania i budować zaufanie dla
nowe klucze przed wdrożeniem.
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- W każdym węźle Cassandra w klastrze zaktualizuj poniższe właściwości do nowego magazynu kluczy.
w pliku cassandra.properties:
conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
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
- Ponownie uruchom usługę Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Po nawiązaniu komunikacji między wszystkimi węzłami przejdź do następnego Węzeł Cassandra. Uwaga: do następnego węzła przejdź tylko po pomyślnej komunikacji. nawiązano między wszystkimi węzłami.
Dodatek
Poniższy przykład pokazuje, jak przygotować certyfikaty serwera potrzebne do wykonania kroków szyfrowania między węzłami. Polecenia podane w przykładzie mają następujące parametry:
Parametr | Opis |
---|---|
node0 |
Dowolny niepowtarzalny ciąg identyfikujący węzeł. |
keystore.node0 |
Nazwa magazynu kluczy. W poleceniach przyjęto, że ten plik znajduje się w bieżącym katalogu. |
keypass |
Hasło musi być takie samo dla magazynu i klucza. |
dname |
Identyfikuje adres IP sieci node0 jako 10.128.0.39 . |
-validity |
Wartość ustawiona na tej flagie sprawia, że wygenerowana para kluczy jest ważna przez 10 lat. |
- Przejdź do tego katalogu:
cd /opt/apigee/data/apigee-cassandra
- Uruchom to polecenie, aby wygenerować w bieżącym katalogu plik o nazwie
keystore.node0
: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"
Ważne: upewnij się, że hasło do klucza jest takie samo jak hasło do magazynu kluczy.
- Wyeksportuj certyfikat do osobnego pliku:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- Upewnij się, że plik jest czytelny tylko dla użytkownika Apigee i dla nikogo innego:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- Zaimportuj wygenerowany certyfikat
node0.cer
do magazynu zaufania węzła:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
W ramach powyższego polecenia musisz ustawić hasło. Jest to hasło do magazynu zaufania. inne niż ustawione wcześniej hasło do magazynu kluczy. Jeśli pojawi się pytanie, czy certyfikat jest zaufany, wpisz
yes
. - Użyj Opensl, aby wygenerować plik PEM certyfikatu bez kluczy. Pamiętaj, że
cqlsh
nie działa z certyfikatem w wygenerowanym formacie.$ 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
- W przypadku szyfrowania między węzłami skopiuj plik
node0.cer
do każdego węzła i zaimportuj go do magazynu zaufania każdego węzła.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Za pomocą
keytool -list
możesz sprawdzać certyfikaty w magazynie kluczy i plikach magazynu zaufania:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0