Cassandra ile birlikte düğüm şifrelemesini etkinleştir

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:

  1. 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.node0 ve truststore.node0 ile 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.

  2. /opt/apigee/customer/application/cassandra.properties dosyası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
  3. cassandra.properties dosyası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:

  1. Cassandra hizmetini durdurun:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. Cassandra hizmetini yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. 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:

  1. 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, CERT eklenecek sertifika dosyasının adı ve EXISTING_TRUSTSTORE, Cassandra düğümündeki mevcut güven deposunun adıdır.

  2. 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.
  3. 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
  4. 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_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. Cassandra hizmetini yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. 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.
  1. Aşağıdaki dizine gidin:
    cd /opt/apigee/data/apigee-cassandra
  2. Geçerli dizinde keystore.node0 adlı 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.

  3. Sertifikayı ayrı bir dosyaya aktarın:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. 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
  5. 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 yes yazın.

  6. 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
  7. Düğümler arası şifreleme için node0.cer dosyası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
  8. Anahtar deposu ve güven deposu dosyalarındaki sertifikaları kontrol etmek için keytool -list aracını kullanın:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0