Szyfrowanie między węzłami (lub szyfrowanie węzła) chroni dane przesyłane między węzłami w klastrze za pomocą TLS. Z tej strony dowiesz się, jak włączyć szyfrowanie internode Cassandra za pomocą TLS w Edge for Private Cloud. Aby wykonać te czynności, musisz znać szczegóły pierścienia Cassandra.
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 załączniku, aby utworzyć klucz i certyfikat podpisany samodzielnie.
Jeśli używasz Edge for Private Cloud w systemie operacyjnym obsługującym FIPS, użyj repozytorium kluczy BouncyCastle FIPS (BCFKS). Wskazówki dotyczące pracy z magazynem kluczy typu BCFKS znajdziesz w dodatku poniżej.
W przypadku tych czynności zakładamy, że masz utworzone pliki
keystore.node0
itruststore.node0
, a także hasła do plików kluczy i poufnych plików kluczy zgodnie z opisem w załączniku. Przed wykonaniem kolejnych czynności na każdym węźle należy utworzyć repozytorium kluczy i repozytorium zaufania.- Dodaj do pliku
/opt/apigee/customer/application/cassandra.properties
te właściwości: 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 # Set the following in FIPS enabled operating systems # With FIPS, older TLS protocols are disabled, so set to TLSv1.2 conf_cassandra_server_encryption_protocol=TLSv1.2 # With FIPS, use BCFKS keystores conf_cassandra_server_encryption_store_type=BCFKS
- Sprawdź, czy plik
cassandra.properties
należy do użytkownika Apigee:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Wykonaj podane niżej czynności na każdym węźle Cassandra po kolei, aby zmiany zaczęły obowiązywać bez powodowania przerw w działaniu usługi dla użytkowników:
- Zatrzymaj usługę Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Uruchom ponownie 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:
Internode messaging enabled TLS protocols Internode messaging enabled cipher suites
Wykonaj rotację certyfikatu
Aby rotować certyfikaty:
- Dodaj certyfikat dla każdej wygenerowanej pary kluczy (patrz Dodatek) do istniejącego repozytorium zaufania węzła Cassandra, aby zarówno stare, jak i nowe certyfikaty znajdowały się w tym samym repozytorium zaufania:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
gdzie
NEW_ALIAS
to unikalny ciąg identyfikujący wpis,CERT
to nazwa pliku certyfikatu do dodania, aEXISTING_TRUSTSTORE
to nazwa istniejącego magazynu zaufania w węźle Cassandra. - Użyj narzędzia do kopiowania, np. scp, aby rozpowszechnić plik truststore we wszystkich węzłach Cassandra w klastrze, zastępując istniejący plik truststore używany przez każdy węzeł.
- Wykonaj stopniowe ponowne uruchamianie klastra, aby załadować nowy magazyn zaufania i ustanowić zaufanie do nowych kluczy, zanim zostaną one zastosowane:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- Na każdym węźle Cassandra w klastrze zaktualizuj właściwości wymienione poniżej, przypisując im nowe wartości kontenera kluczy w pliku cassandra.properties:
conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
gdzie
NEW_KEYSTORE_PATH
to ścieżka do katalogu, w którym znajduje się plik magazynu kluczy, aNEW_KEYSTORE_PASSWORD
to hasło do magazynu kluczy ustawione podczas tworzenia certyfikatów, zgodnie z opisem w dodatku. - Zatrzymaj usługę Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Uruchom ponownie usługę Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Gdy komunikacja między wszystkimi węzłami zostanie nawiązana, przejdź do następnego węzła Cassandra. Uwaga: do następnego węzła należy przejść tylko po nawiązaniu komunikacji między wszystkimi węzłami.
Dodatek
Z poniższego przykładu dowiesz się, jak przygotować certyfikaty serwera potrzebne do wykonania czynności dotyczących szyfrowania w węzłach. Polecenia użyte w tym przykładzie korzystają z tych parametrów:
Parametr | Opis |
---|---|
node0 |
dowolny unikalny ciąg znaków identyfikujący węzeł; |
keystore.node0 |
Nazwa klucza. Zakładamy, ż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 dla tej flagi sprawia, że wygenerowana para kluczy jest ważna przez 10 lat. |
- Otwórz ten katalog:
cd /opt/apigee/data/apigee-cassandra
- Aby wygenerować w bieżącym katalogu plik o nazwie
keystore.node0
, uruchom to polecenie: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 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, a nie 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 magazynu zaufania, które może być inne niż ustawione wcześniej hasło magazynu kluczy. Jeśli pojawi się prośba o zaakceptowanie certyfikatu, 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 węzeł–węzeł skopiuj plik
node0.cer
do każdego węzła i zaimportuj go do repozytorium zaufania każdego węzła.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Użyj
keytool -list
do sprawdzania certyfikatów w magazynie kluczy i plikach magazynu zaufania:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0
Praca z magazynami kluczy BCFKS w systemach operacyjnych obsługujących FIPS
Podczas pracy z systemami operacyjnymi z obsługą FIPS należy używać kluczy FIPS BouncyCastle (BCFKS). W sekcji poniżej dowiesz się, jak korzystać z magazynów kluczy typu BCFKS. Pozostałe czynności związane z keystore (np. własność plików, ich lokalizacja itp.) pozostają takie same jak wymienione w tym dodatku.
Aby wygenerować magazyn kluczy typu BCFKS, użyj tego polecenia:
keytool -genkeypair -keyalg RSA -alias node0 -validity 365 -keystore keystore.node0 \ -storepass keypass -keypass keypass -v \ -dname "EMAILADDRESS=youremail@domain.com, CN=yourcn, OU=yourou, O=youro, L=yourl, C=yourc" \ -storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \ -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS
Uwaga: hasło magazynu kluczy i hasło klucza powinny być takie same.
Uwaga: możesz użyć pliku bc-fips
jar dostarczonego przez Apigee lub pobrać ten sam plik z repozytorium BouncyCastle. Więcej informacji o generowaniu magazynu kluczy BCFKS znajdziesz w dokumentacji BouncyCastle.
Wyeksportuj certyfikat do osobnego pliku:
keytool -export -v -alias node0 -file node0.cer -keystore keystore.node0 -storepass keypass \ -storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \ -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS
Zaimportuj wygenerowany certyfikat node0.cer
do magazynu zaufania węzła:
keytool -import -v -alias node0 -file node0.cer -keystore truststore.node0 -storepass storepass \ -storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \ -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS