Włącz szyfrowanie węzła Cassandra

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:

  1. 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 i truststore.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.

  2. 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
  3. 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.

  1. Zatrzymaj usługę Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. Ponownie uruchom usługę Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. 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:

  1. 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 i EXISTING_TRUSTSTORE to nazwa istniejącego magazynu zaufania w węźle Cassandra.

  2. 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ł.
  3. 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
  4. 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 and NEW_KEYSTORE_PASSWORD is the keystore password set when the certificates were created, as explained in the Appendix.

  5. Stop the Cassandra service:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  6. Ponownie uruchom usługę Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. 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.
  1. Przejdź do tego katalogu:
    cd /opt/apigee/data/apigee-cassandra
  2. 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.

  3. Wyeksportuj certyfikat do osobnego pliku:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. 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
  5. 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.

  6. 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
  7. 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
  8. 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