رمزگذاری بین گره (یا گره به گره) از داده هایی که بین گره ها در یک خوشه با استفاده از TLS حرکت می کنند محافظت می کند. این صفحه نحوه فعال کردن رمزگذاری میانگره Cassandra را با استفاده از TLS در Edge برای Private Cloud توضیح میدهد. برای انجام این مراحل باید با جزئیات انگشتر کاساندرا خود آشنا باشید.
رمزگذاری میانگره کاساندرا را فعال کنید
برای فعال کردن رمزگذاری میانگره Cassandra مراحل زیر را دنبال کنید:
با دنبال کردن مراحل موجود در پیوست برای ایجاد یک کلید و گواهی خودامضا، گواهیهای سرور ایجاد کنید.
مراحل زیر فرض می کنند که
keystore.node0
وtruststore.node0
و همچنین رمزهای عبور keystore و truststore را ایجاد کرده اید، همانطور که در پیوست توضیح داده شده است. قبل از ادامه مراحل بعدی، ذخیرهسازی کلید و ذخیرهسازی اعتماد باید بهعنوان مراحل اولیه در هر گره ایجاد شوند.- ویژگی های زیر را به فایل
/opt/apigee/customer/application/cassandra.properties
اضافه کنید. اگر فایل وجود ندارد، آن را ایجاد کنید.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
- مطمئن شوید که فایل
cassandra.properties
متعلق به کاربر apigee است:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
مراحل زیر را در هر گره Cassandra یک به یک اجرا کنید، بنابراین تغییرات بدون ایجاد هیچ گونه خرابی برای کاربران اعمال شوند:
- سرویس کاساندرا را متوقف کنید:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- راه اندازی مجدد سرویس Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- برای تعیین اینکه آیا سرویس رمزگذاری TLS شروع شده است، گزارش های سیستم را برای پیام زیر بررسی کنید:
Starting Encrypted Messaging Service on TLS port
چرخش گواهی را انجام دهید
برای چرخاندن گواهی ها، مراحل زیر را دنبال کنید:
- گواهی را برای هر جفت کلید تولید شده منحصربهفرد ( به پیوست مراجعه کنید) به یک Truststore گره Cassandra اضافه کنید، به طوری که گواهیهای قدیمی و گواهیهای جدید در یک Truststore وجود داشته باشند:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
که در آن
NEW_ALIAS
یک رشته منحصر به فرد برای شناسایی ورودی است،CERT
نام فایل گواهی برای افزودن است، وEXISTING_TRUSTSTORE
نام ذخیره موجود موجود در گره Cassandra است. - از یک ابزار کپی مانند scp برای توزیع Truststore در تمام گره های Cassandra در خوشه استفاده کنید و جایگزین Truststore موجود در حال استفاده توسط هر گره شود.
- برای بارگیری انبار اعتماد جدید و ایجاد اعتماد برای کلیدهای جدید قبل از قرار گرفتن در محل، یک راه اندازی مجدد خوشه انجام دهید:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- در هر گره Cassandra در خوشه، ویژگی های نشان داده شده در زیر را به مقادیر جدید keystore در فایل cassandra.properties به روز کنید:
conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
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
- راه اندازی مجدد سرویس Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- هنگامی که ارتباط بین همه گره ها با موفقیت برقرار شد، به گره کاساندرا بعدی بروید. توجه: فقط در صورتی به گره بعدی بروید که ارتباط بین همه گره ها با موفقیت برقرار شود.
ضمیمه
مثال زیر نحوه تهیه گواهی های سرور مورد نیاز برای انجام مراحل رمزگذاری میانگره را توضیح می دهد. دستورات نشان داده شده در مثال از پارامترهای زیر استفاده می کنند:
پارامتر | توضیحات |
---|---|
node0 | هر رشته منحصر به فرد برای شناسایی گره. |
keystore.node0 | یک نام فروشگاه کلید. دستورات فرض می کنند که این فایل در دایرکتوری فعلی است. |
keypass | پاس کلید باید هم برای keystore و هم برای key یکسان باشد. |
dname | آدرس IP node0 را 10.128.0.39 شناسایی می کند. |
-validity | مقدار تنظیم شده روی این پرچم باعث می شود جفت کلید تولید شده به مدت 10 سال معتبر باشد. |
- به دایرکتوری زیر بروید:
cd /opt/apigee/data/apigee-cassandra
- دستور زیر را برای ایجاد فایلی به نام
keystore.node0
در دایرکتوری فعلی اجرا کنید: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"
مهم: مطمئن شوید که رمز عبور کلید با رمز عبور keystore یکسان است.
- گواهی را به یک فایل جداگانه صادر کنید:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- اطمینان حاصل کنید که فایل فقط توسط کاربر apigee قابل خواندن است و توسط هیچ کس دیگری:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- گواهی تولید شده
node0.cer
را به Truststore گره وارد کنید:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
دستور بالا از شما می خواهد که یک رمز عبور تعیین کنید. این رمز عبور Truststore است و می تواند با رمز عبور keystore که قبلا تنظیم کرده اید متفاوت باشد. اگر از شما خواسته شد به گواهی اعتماد کنید،
yes
را وارد کنید. - از openssl برای تولید یک فایل PEM گواهی بدون کلید استفاده کنید. توجه داشته باشید که
cqlsh
با فرمت تولید شده با گواهی کار نمی کند.$ 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
- برای رمزگذاری گره به گره، فایل
node0.cer
را در هر گره کپی کنید و آن را به Truststore هر گره وارد کنید.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- از
keytool -list
برای بررسی گواهینامه ها در فایل های keystore و truststore استفاده کنید:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0