Aktifkan enkripsi internode Cassandra

Enkripsi {i>internode<i} (atau {i>node-to-node<i}) melindungi data yang bepergian di antara {i>node<i} dalam sebuah cluster menggunakan TLS. Halaman ini menjelaskan cara mengaktifkan enkripsi internode Cassandra menggunakan TLS di Edge untuk di Cloud Private Cloud. Untuk melakukan langkah ini, Anda harus memahami detail Cassandra cincin.

Aktifkan enkripsi internode Cassandra

Untuk mengaktifkan enkripsi internode Cassandra, ikuti prosedur di bawah ini pada semua {i>node<i} dalam . Anda perlu mendistribusikan sertifikat publik dari setiap node ke semua node. Setelah melakukannya, setiap node akan berisi sertifikat node0.cer, node1.cer, dll. di truststore-nya. Setiap {i>node<i} hanya akan berisi kunci pribadinya sendiri di keystore. Misalnya, node0 hanya akan berisi node0.pem dalam keystore. Anda harus mengaktifkan enkripsi pada setiap node, satu per satu.

Ikuti langkah-langkah berikut untuk mengaktifkan enkripsi internode Cassandra:

  1. Buat sertifikat server dengan mengikuti langkah-langkah di Lampiran untuk membuat kunci yang ditandatangani sendiri dan sertifikat.

    Langkah-langkah berikut mengasumsikan bahwa Anda telah membuat keystore.node0 dan truststore.node0, serta sandi keystore dan truststore, seperti yang dijelaskan dalam Lampiran. Keystore dan truststore harus dibuat sebagai langkah awal pada setiap node sebelum melanjutkan berikut langkah-langkah selanjutnya.

  2. Tambahkan properti berikut ke /opt/apigee/customer/application/cassandra.properties . Jika file tidak ada, buat file tersebut.
    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. Pastikan file cassandra.properties dimiliki oleh pengguna apigee:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties

Jalankan langkah berikut pada setiap node Cassandra, satu per satu, sehingga perubahan dapat diterapkan tanpa menyebabkan periode nonaktif bagi pengguna:

  1. Menghentikan layanan Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. Mulai ulang layanan Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. Untuk mengetahui apakah layanan enkripsi TLS telah dimulai, periksa log sistem untuk pesan berikut:
    Starting Encrypted Messaging Service on TLS port

Lakukan rotasi sertifikat

Untuk merotasi sertifikat, ikuti langkah-langkah berikut:

  1. Menambahkan sertifikat untuk setiap pasangan kunci unik yang dihasilkan (lihat Lampiran) ke aplikasi Cassandra yang ada truststore node, sehingga sertifikat lama dan sertifikat baru berada di truststore:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE

    dengan NEW_ALIAS merupakan string unik untuk mengidentifikasi entri, CERT adalah nama sertifikat file yang akan ditambahkan, dan EXISTING_TRUSTSTORE adalah nama truststore yang ada di node Cassandra.

  2. Menggunakan utilitas penyalinan, seperti scp, untuk mendistribusikan truststore ke semua node Cassandra di cluster menggantikan truststore yang ada dan digunakan oleh setiap node.
  3. Mulai ulang cluster secara berkelanjutan untuk memuat truststore baru dan membangun kepercayaan untuk kunci baru sebelum diterapkan:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. Pada setiap node Cassandra di cluster, perbarui properti yang ditampilkan di bawah ke keystore baru nilai pada file {i>cassandra.properties<i}:
    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. Mulai ulang layanan Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. Setelah komunikasi berhasil dibuat di antara semua node, lanjutkan ke node berikutnya Node Cassandra. Catatan: Hanya melanjutkan ke node berikutnya jika komunikasi berhasil dibuat di antara semua {i>node<i}.

Lampiran

Contoh berikut menjelaskan cara menyiapkan sertifikat server yang diperlukan untuk melakukan langkah-langkah enkripsi internode. Perintah yang ditampilkan dalam contoh menggunakan parameter berikut:

Parameter Deskripsi
node0 String unik apa pun untuk mengidentifikasi node.
keystore.node0 Nama keystore. Perintah tersebut mengasumsikan file ini berada di direktori saat ini.
keypass Keypass harus sama untuk keystore dan kunci.
dname Mengidentifikasi alamat IP node0 sebagai 10.128.0.39.
-validity Nilai yang ditetapkan pada flag ini membuat pasangan kunci yang dihasilkan valid selama 10 tahun.
  1. Buka direktori berikut:
    cd /opt/apigee/data/apigee-cassandra
  2. Jalankan perintah berikut untuk menghasilkan file bernama keystore.node0 di direktori saat ini:
    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"

    Penting: Pastikan sandi kunci sama dengan sandi keystore.

  3. Ekspor sertifikat ke file terpisah:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. Pastikan file hanya dapat dibaca oleh pengguna apigee dan tidak oleh orang lain:
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. Impor sertifikat yang dihasilkan node0.cer ke truststore node:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    Perintah di atas meminta Anda untuk mengatur sandi. Ini adalah {i>password<i} {i>truststore<i} dan dapat berbeda dari sandi keystore yang Anda tetapkan sebelumnya. Jika diminta untuk mempercayai sertifikat, masukkan yes.

  6. Gunakan openssl untuk membuat file PEM sertifikat tanpa kunci. Perlu diketahui bahwa cqlsh tidak berfungsi dengan sertifikat dalam format yang dihasilkan.
    $ 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. Untuk enkripsi node ke node, salin file node0.cer ke setiap node dan impor ke truststore setiap node.
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. Gunakan keytool -list untuk memeriksa sertifikat di keystore dan file truststore:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0