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 poniższe czynności na wszystkich węzłach
klastra. Musisz rozdzielić publiczne certyfikaty każdego węzła na wszystkie węzły.
Po wykonaniu tej czynności każdy węzeł będzie zawierał certyfikaty
node0.cer
, node1.cer
itp. w swoim magazynie zaufania. Każdy węzeł będzie
swój klucz prywatny w
do magazynu kluczy. Na przykład node0
może zawierać tylko node0.pem
w swoim
do magazynu kluczy. Musisz włączyć szyfrowanie w każdym węźle, pojedynczo.
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_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
- 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_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
- 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