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

Düğüm arası (veya düğümden düğüme) şifreleme, bir kümedeki düğümler arasında seyahat eden verileri korur. daha hızlı teslim edilmesine yardımcı olur. Bu sayfada, Private Cloud için Edge'de TLS kullanılarak Cassandra düğümler arası şifrelemenin nasıl etkinleştirileceği açıklanmaktadır. Bu adımları gerçekleştirmek için Cassandra halkanızı ayrıntılarıyla bilmeniz gerekir.

Cassandra düğümler arası şifrelemeyi etkinleştirme

Cassandra internode şifrelemesini etkinleştirmek için şu adımları uygulayın:

  1. Ek'te yer alan adımları uygulayarak sunucu sertifikaları oluşturun. kullanarak kendinden imzalı bir anahtar ve sertifika oluşturun.

    FIPS özellikli bir işletim sisteminde Edge for Private Cloud kullanıyorsanız BouncyCastle FIPS Anahtar Deposu (BCFKS) kullanın. BCFKS türü anahtar deposuyla çalışmayla ilgili ipuçları için aşağıdaki Ek'e bakın.

    Aşağıdaki adımlarda, Ek'te açıklandığı gibi keystore.node0 ve truststore.node0 öğelerinin yanı sıra 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_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
      
  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 bir Cassandra düğümünde birer birer uygulayın. Böylece, değişiklikler kullanıcılar için kapalı kalma süresi olmadan geçerlilik kazanır:

  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ı arayın:
    Internode messaging enabled TLS protocols
    Internode messaging enabled cipher suites
    

Sertifika rotasyonu gerçekleştirme

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

  1. Oluşturulan her benzersiz anahtar çiftinin sertifikasını (Ek'e 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üven mağazasını 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üven mağazasını değiştirir.
  3. Yeni güven deposunu yüklemek ve yeni anahtarlar kullanılmadan ö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ında yeni anahtar deposu değerleriyle güncelleyin:
    conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH
    conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
      

    Burada NEW_KEYSTORE_PATH, anahtar deposu dosyasının bulunduğu dizinin yolu, NEW_KEYSTORE_PASSWORD ise Ek bölümünde açıklandığı gibi, sertifikalar oluşturulurken ayarlanan anahtar deposu şifresidir.

  5. Cassandra hizmetini durdurun:
    /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 başarılı bir şekilde iletişim kurulduktan sonra bir sonraki Cassandra düğümüne geçin. Not: Yalnızca tüm düğümler arasında başarıyla iletişim kurulursa sonraki düğüme geçin.

Ek

Aşağıdaki örnekte, adımları uygulayın. Örnekte gösterilen komutlar aşağıdaki parametreleri kullanır:

Parametre Açıklama
node0 Nodu tanımlayan benzersiz bir dize.
keystore.node0 Anahtar mağazası adı. Komutlarda, bu dosyanın geçerli dizinde olduğu varsayılır.
keypass Tuş 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 geçerli hale getirir.
  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 mağazası ş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 okunabilir olduğundan 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 komut bir şifre ayarlamanızı ister. Bu, Trustedstore şifresidir ve daha önce belirlediğiniz anahtar deposu şifresinden farklı olmalıdır. Sertifikaya güvenmeniz istenirse yes girin.

  6. Sertifikanın PEM dosyasını anahtar olmadan oluşturmak için opensl'yi kullanın. Unutmayı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 komutunu kullanın:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0

FIPS özellikli işletim sistemleri için BCFKS anahtar depolarıyla çalışma

FIPS özellikli işletim sistemleriyle çalışırken BouncyCastle FIPS Anahtar Depoları'nı (BCFKS) kullanın. Aşağıdaki bölümde, BCFKS türü anahtar depolarıyla nasıl çalışacağınız açıklanmaktadır. Anahtar depolarıyla çalışmak için diğer adımlar (ör. dosya sahipliği, dosya konumu vb.) bu ekte belirtilen şekilde kalır.

BCFKS türündeki bir anahtar mağazası oluşturmak için aşağıdaki komutu kullanın:

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

Not: Anahtar deposu şifresi ve anahtar şifresi aynı olmalıdır.

Not: Apigee tarafından gönderilen bc-fips jar dosyası kullanılabilir veya aynı jar dosyası BouncyCastle'ın depolarından indirilebilir. BCFKS anahtar deposu oluşturma hakkında daha fazla bilgi için BouncyCastle'ın dokümanlarına bakın.

Sertifikayı ayrı bir dosyaya aktarın:

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

Oluşturulan node0.cer sertifikasını düğümün güven deposuna aktarın:

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