Enkripsi internode (atau node-to-node) melindungi data yang berpindah antar-node dalam sebuah cluster menggunakan TLS. Halaman ini menjelaskan cara mengaktifkan enkripsi internode Cassandra menggunakan TLS di Edge untuk Private Cloud. Untuk melakukan langkah-langkah ini, Anda harus memahami detail cincin Cassandra Anda.
Aktifkan enkripsi internode Cassandra
Untuk mengaktifkan enkripsi internode Cassandra, ikuti prosedur di bawah ini pada semua node dalam cluster. 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 node hanya akan
berisi kunci pribadinya sendiri di
keystore. Misalnya, node0
hanya akan berisi node0.pem
dalam
keystore-nya. Anda perlu mengaktifkan enkripsi pada setiap node, satu per satu.
Ikuti langkah-langkah berikut untuk mengaktifkan enkripsi internode Cassandra:
Buat sertifikat server dengan mengikuti langkah-langkah dalam Lampiran untuk membuat kunci dan sertifikat yang ditandatangani sendiri.
Langkah-langkah berikut mengasumsikan bahwa Anda telah membuat
keystore.node0
dantruststore.node0
, serta sandi keystore dan truststore, seperti yang dijelaskan dalam Lampiran. Keystore dan truststore harus dibuat sebagai langkah awal pada setiap node sebelum melanjutkan ke langkah berikutnya.- Tambahkan properti berikut ke file
/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
- Pastikan bahwa file
cassandra.properties
dimiliki oleh pengguna apigee:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
Jalankan langkah-langkah berikut pada setiap node Cassandra, satu per satu agar perubahan diterapkan tanpa menyebabkan periode nonaktif bagi pengguna:
- Hentikan layanan Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Mulai ulang layanan Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Untuk menentukan apakah layanan enkripsi TLS telah dimulai, periksa log sistem untuk pesan berikut:
Starting Encrypted Messaging Service on TLS port
Melakukan rotasi sertifikat
Untuk merotasi sertifikat, ikuti langkah-langkah berikut:
- Tambahkan sertifikat untuk setiap pasangan kunci unik yang dihasilkan (lihat Lampiran)
ke truststore node Cassandra
yang ada, sehingga sertifikat lama dan sertifikat baru berada di truststore
yang sama:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
dengan
NEW_ALIAS
adalah string unik untuk mengidentifikasi entri,CERT
adalah nama file sertifikat yang akan ditambahkan, danEXISTING_TRUSTSTORE
adalah nama truststore yang ada di node Cassandra. - Gunakan utilitas penyalinan, seperti scp, untuk mendistribusikan truststore ke semua node Cassandra di cluster yang menggantikan truststore yang ada yang digunakan oleh setiap node.
- Mulai ulang cluster secara bergantian untuk memuat truststore baru dan membangun kepercayaan untuk kunci baru sebelum kunci tersebut digunakan:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- Pada setiap node Cassandra di cluster, perbarui properti yang ditampilkan di bawah ini ke nilai keystore baru dalam file cassandra.properties:
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 andNEW_KEYSTORE_PASSWORD
is the keystore password set when the certificates were created, as explained in the Appendix. - Stop the Cassandra service:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Mulai ulang layanan Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- Setelah komunikasi berhasil dibuat antara semua node, lanjutkan ke node Cassandra berikutnya. Catatan: Hanya lanjutkan ke node berikutnya jika komunikasi berhasil dibuat antara semua node.
Lampiran
Contoh berikut menjelaskan cara menyiapkan sertifikat server yang diperlukan untuk melakukan langkah-langkah enkripsi internode. Perintah yang ditunjukkan dalam contoh menggunakan parameter berikut:
Parameter | Deskripsi |
---|---|
node0 |
String unik apa pun untuk mengidentifikasi node. |
keystore.node0 |
Nama keystore. Perintah ini menganggap 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 berlaku selama 10 tahun. |
- Buka direktori berikut:
cd /opt/apigee/data/apigee-cassandra
- Jalankan perintah berikut untuk membuat 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.
- Ekspor sertifikat ke file terpisah:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- Pastikan file hanya dapat dibaca oleh pengguna apigee dan bukan orang lain:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- 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 menetapkan kata sandi. Ini adalah sandi truststore dan dapat berbeda dengan sandi keystore yang Anda tetapkan sebelumnya. Jika diminta untuk memercayai sertifikat, masukkan
yes
. - Gunakan openssl untuk membuat file PEM sertifikat tanpa kunci. Perhatikan bahwa
cqlsh
tidak berfungsi dengan sertifikat dalam format yang dibuat.$ 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
- 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
- Gunakan
keytool -list
untuk memeriksa sertifikat dalam file keystore dan truststore:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0