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

İç düğüm (veya düğümden düğüme) şifreleme, bir kümedeki düğümler arasında seyahat eden verileri TLS kullanarak korur. Bu sayfada, Private Cloud için Edge'de TLS kullanarak Cassandra ara düğüm şifrelemesinin nasıl etkinleştirileceği açıklanmaktadır. Bu adımları uygulamak için Cassandra halkanızın ayrıntılarına aşina olmanız gerekir.

Cassandra ara düğüm şifrelemesini etkinleştir

Cassandra ara düğüm şifrelemesini etkinleştirmek için kümedeki tüm düğümlerde aşağıdaki prosedürü uygulayın. Her düğümün genel sertifikalarını tüm düğümlere dağıtmanız gerekir. Bunu yaptıktan sonra, her düğümün güven deposunda node0.cer, node1.cer vb. sertifikalar yer alır. Her düğümün anahtar deposunda yalnızca kendi özel anahtarı bulunur. Örneğin, node0, anahtar deposunda yalnızca node0.pem içerir. Şifrelemeyi her düğümde tek tek etkinleştirmeniz gerekir.

Cassandra ara düğüm şifrelemesini etkinleştirmek için aşağıdaki adımları uygulayın:

  1. Kendinden imzalı bir anahtar ve sertifika oluşturmak için Ek'teki 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ımlar 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

Aşağıdaki adımları her Cassandra düğümünde tek tek uygulayın. Böylece değişiklikler kullanıcılar için kapalı kalma süresi olmadan geçerli olur:

  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üklerinde aşağıdaki mesajın olup olmadığını kontrol edin:
    Starting Encrypted Messaging Service on TLS port

Sertifika rotasyonu gerçekleştirme

Sertifikaları döndürmek için şu adımları uygulayın:

  1. Oluşturulan her benzersiz anahtar çifti için sertifikayı (Ek bölümüne bakın) mevcut bir Cassandra düğümünün güven deposuna ekleyin. Böylece hem eski hem de yeni sertifikalar aynı güven deposunda yer alır:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE

    Burada NEW_ALIAS, girişi tanımlayan benzersiz bir dizedir, CERT, eklenecek sertifika dosyasının adıdır. EXISTING_TRUSTSTORE ise Cassandra düğümündeki mevcut güven deposunun adıdır.

  2. Truststore'u kümedeki tüm Cassandra düğümlerine dağıtmak için her bir düğüm tarafından kullanılan mevcut güven deposunun yerine scp gibi bir kopyalama yardımcı programı kullanın.
  3. Yeni güven deposunu yüklemek ve yeni anahtarlar oluşturulmadan önce güven tesis etmek için kümeyi periyodik olarak yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. Kümedeki her Cassandra düğümünde, aşağıda gösterilen özellikleri cassandra.properties dosyasındaki yeni anahtar deposu değerleriyle 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, inter düğüm ş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 dize.
keystore.node0 Anahtar deposu adı. Komutlar bu dosyanın geçerli dizinde olduğunu varsayar.
keypass Anahtar geçişi, hem anahtar deposu hem de anahtar için aynı olmalıdır.
dname node0 IP adresini 10.128.0.39 olarak tanımlar.
-validity Bu işarette ayarlanan değer, oluşturulan anahtar çiftini 10 yıl boyunca geçerli hale getirir.
  1. Şu 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 ve başka hiç kimse tarafından okunabildiğinden emin olun:
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. Oluşturulan node0.cer sertifikasını düğümün güven deposuna aktarın:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    Yukarıdaki komutta bir şifre belirlemeniz istenir. Bu, güven deposu şifresidir ve daha önce ayarladığınız anahtar deposu şifresinden farklı olabilir. Sertifikaya güvenmeniz istenirse yes yazın.

  6. Sertifikanın PEM dosyasını anahtar olmadan oluşturmak için Opensl kullanın. cqlsh öğesinin, oluşturulan biçimdeki sertifika ile çalışmadığını unutmayın.
    $ 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üğümden düğüme şifreleme için node0.cer dosyasını her düğüme kopyalayın ve her düğümün güven deposuna içe aktarın.
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. Anahtar deposu ve güven deposu dosyalarında sertifikaları kontrol etmek için keytool -list kullanın:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0