Düğümler arası (veya düğümden düğüme) şifreleme, TLS kullanarak bir kümedeki düğümler arasında aktarılan verileri korur. Bu sayfada, Edge for Private Cloud'da TLS kullanarak Cassandra düğümler arası şifrelemenin nasıl etkinleştirileceği açıklanmaktadır. Bu adımları uygulamak için Cassandra halkasının ayrıntılarını bilmeniz gerekir.
Cassandra düğümler arası şifrelemeyi etkinleştirme
Cassandra düğümler arası şifrelemeyi etkinleştirmek için kümedeki tüm düğümlerde aşağıdaki prosedürü uygulayın. Her düğümün herkese açık sertifikalarını tüm düğümlere dağıtmanız gerekir.
Bu işlemden sonra her düğüm, güven deposunda node0.cer, node1.cer vb. sertifikaları içerir. Her düğüm, anahtar deposunda yalnızca kendi özel anahtarını içerir. Örneğin, node0 anahtar deposunda yalnızca node0.pem bulunur. Şifrelemeyi her düğümde tek tek etkinleştirmeniz gerekir.
Cassandra düğümler arası şifrelemeyi etkinleştirmek için aşağıdaki adımları uygulayın:
Kendi kendine imzalanmış bir anahtar ve sertifika oluşturmak için Ek bölümündeki adımları uygulayarak sunucu sertifikaları oluşturun.
Aşağıdaki adımlarda, Ek bölümünde açıklandığı gibi
keystore.node0vetruststore.node0ile anahtar deposu ve güven deposu şifrelerini oluşturduğunuz varsayılmaktadır. Sonraki adımlara geçmeden önce her düğümde ön adım olarak anahtar deposu ve güven deposu oluşturulmalıdır./opt/apigee/customer/application/cassandra.propertiesdosyasına aşağıdaki özellikleri ekleyin. Dosya yoksa oluşturun.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
cassandra.propertiesdosyasının apigee kullanıcısına ait olduğundan emin olun:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Değişikliklerin kullanıcılar için herhangi bir kesinti olmadan geçerli olması için her Cassandra düğümünde aşağıdaki adımları tek tek uygulayın:
- Cassandra hizmetini durdurun:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Cassandra hizmetini yeniden başlatın:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- TLS şifreleme hizmetinin başlatılıp başlatılmadığını belirlemek için sistem günlüğünde aşağıdaki mesajı kontrol edin:
Starting Encrypted Messaging Service on TLS port
Sertifika rotasyonu gerçekleştirme
Sertifikaları rotasyona tabi tutmak için aşağıdaki adımları uygulayın:
- Oluşturulan her benzersiz anahtar çiftinin sertifikasını (Ek bölümüne bakın) mevcut bir Cassandra düğümünün güven deposuna ekleyin. Böylece hem eski sertifikalar hem de yeni sertifikalar aynı güven deposunda bulunur:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
Burada
NEW_ALIAS, girişi tanımlayan benzersiz bir dize,CERTeklenecek sertifika dosyasının adı veEXISTING_TRUSTSTORE, Cassandra düğümündeki mevcut güven deposunun adıdır. - Güvenilir depoyu kümedeki tüm Cassandra düğümlerine dağıtmak için scp gibi bir kopyalama yardımcı programı kullanın. Bu işlem, her düğüm tarafından kullanılan mevcut güvenilir deponun yerini alır.
- Yeni güvenilir depoyu yüklemek ve yeni anahtarlar için güven oluşturmak üzere kümede sıralı yeniden başlatma işlemi gerçekleştirin:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- Kümedeki her Cassandra düğümünde, cassandra.properties dosyasındaki yeni anahtar deposu değerlerine aşağıdaki özellikleri güncelleyin:
conf_cassandra_keystore=NEW_KEYSTORE_PATH conf_cassandra_keystore_password=NEW_KEYSTORE_PASSOWRD
where
NEW_KEYSTORE_PATHis the path to the directory where the keystore file is located andNEW_KEYSTORE_PASSWORDis 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
- Cassandra hizmetini yeniden başlatın:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Tüm düğümler arasında iletişim başarıyla kurulduğunda bir sonraki Cassandra düğümüne geçin. Not: Yalnızca tüm düğümler arasında iletişim başarıyla kurulduysa bir sonraki düğüme geçin.
Ek
Aşağıdaki örnekte, düğümler arası şifreleme adımlarını gerçekleştirmek için gereken sunucu sertifikalarının nasıl hazırlanacağı açıklanmaktadır. Örnekte gösterilen komutlar aşağıdaki parametreleri kullanır:
| Parametre | Açıklama |
|---|---|
node0 |
Düğümü tanımlayan benzersiz bir dize. |
keystore.node0 |
Anahtar deposu adı. Komutlar, bu dosyanın geçerli dizinde olduğunu varsayar. |
keypass |
Anahtar deposu ve anahtar için aynı anahtar şifresi kullanılmalıdır. |
dname |
node0 IP adresini 10.128.0.39 olarak tanımlar. |
-validity |
Bu işaret için ayarlanan değer, oluşturulan anahtar çiftini 10 yıl boyunca geçerli kılar. |
- Aşağıdaki dizine gidin:
cd /opt/apigee/data/apigee-cassandra
- Geçerli dizinde
keystore.node0adlı bir dosya oluşturmak için aşağıdaki komutu çalıştırın: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"
Önemli: Anahtar şifresinin, anahtar deposu şifresiyle aynı olduğundan emin olun.
- Sertifikayı ayrı bir dosyaya aktarın:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- Dosyanın yalnızca apigee kullanıcısı tarafından okunabildiğinden ve başka hiç kimse tarafından okunamadığından emin olun:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- Oluşturulan sertifikayı (
node0.cer) düğümün güven deposuna aktarın:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
Yukarıdaki komut sizden bir şifre belirlemenizi ister. Bu, güvenilir depo şifresidir ve daha önce belirlediğiniz anahtar deposu şifresinden farklı olabilir. Sertifikaya güvenmeniz istenirse
yesyazın. - Anahtar içermeyen sertifikanın PEM dosyasını oluşturmak için openssl'yi kullanın.
cqlsh, oluşturulan biçimdeki sertifikayla çalışmaz.$ 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
- Düğümler arası şifreleme için
node0.cerdosyasını her düğüme kopyalayın ve her düğümün güven deposuna aktarın.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- Anahtar deposu ve güven deposu dosyalarındaki sertifikaları kontrol etmek için
keytool -listaracını kullanın:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0