Düğümler arası (veya düğümden düğüme) şifreleme, bir kümedeki düğümler arasında TLS kullanılarak aktarılan verileri korur. 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ı uygulamak için Cassandra yüzüğünüzle ilgili ayrıntıları öğrenmeniz gerekir.
Cassandra düğümler arası şifrelemeyi etkinleştirme
Cassandra düğümler arası şifrelemeyi etkinleştirmek için aşağıdaki adımları uygulayın:
Kendinden imzalı bir anahtar ve sertifika oluşturmak için Ek'teki adımları uygulayarak sunucu sertifikaları oluşturun.
Private Cloud için Edge'i FIPS özellikli bir işletim sisteminde kullanıyorsanız BouncyCastle FIPS Anahtar Deposu'nu (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 bölümünde açıklandığı gibi
keystore.node0
vetruststore.node0
'nin yanı sıra anahtar mağazası ve güven mağazası şifrelerini oluşturduğunuz varsayılmaktadır. Sonraki adımlara geçmeden önce her düğümde anahtar deposu ve güven deposu ön adımlar olarak oluşturulmalıdır./opt/apigee/customer/application/cassandra.properties
dosyasına aşağıdaki özellikleri ekleyin. Dosya mevcut değilse dosyayı 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
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 kesintiye neden 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ü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:
- 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ı veEXISTING_TRUSTSTORE
Cassandra düğümündeki mevcut güven deposunun adıdır. - 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.
- Yeni güven mağazasını yüklemek ve yeni anahtarlar kullanılmadan önce bunlara güven oluşturmak için kümeyi aşamalı olarak yeniden başlatın:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- 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_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 yoludur.NEW_KEYSTORE_PASSWORD
, Ek'te açıklandığı üzere sertifikalar oluşturulurken belirlenen anahtar deposu şifresidir. - 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
- 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ılı bir şekilde iletişim 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ı. Komutlarda, bu dosyanın geçerli dizinde olduğu varsayılır. |
keypass |
Anahtar anahtarı hem anahtar deposu hem de anahtar için aynı olmalıdır. |
dname |
node0 'ün IP adresini 10.128.0.39 olarak tanımlar. |
-validity |
Bu işarette ayarlanan değer, oluşturulan anahtar çiftinin 10 yıl boyunca geçerli olmasını sağlar. |
- Aşağıdaki dizine gidin:
cd /opt/apigee/data/apigee-cassandra
- 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.
- 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 okunabilir olduğundan emin olun:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- 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, şifre belirlemeniz istenir. Bu, güven mağazası şifresidir ve daha önce belirlediğiniz anahtar mağazası şifresinden farklı olabilir. Sertifikaya güvenmeniz istenirse
yes
yazın. - Anahtar içermeyen bir PEM dosyası oluşturmak için openssl'i kullanın.
cqlsh
etiketinin oluşturulan sertifikayla ç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
- 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
- Anahtar deposu ve güven deposu dosyalarındaki sertifikaları kontrol etmek için
keytool -list
simgesini 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ışabileceğiniz açıklanmaktadır. Anahtar depolarıyla çalışmayla ilgili diğer adımlar (ör. dosya sahipliği, dosya konumu vb.) bu ekte belirtilenlerle aynıdı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 deposunun nasıl oluşturulacağıyla ilgili daha fazla bilgi için BouncyCastle'ın belgelerine 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