رمزگذاری بین گره (یا گره به گره) از داده هایی که بین گره ها در یک خوشه با استفاده از TLS حرکت می کنند محافظت می کند. این صفحه نحوه فعال کردن رمزگذاری میانگره Cassandra را با استفاده از TLS در Edge برای Private Cloud توضیح میدهد. برای انجام این مراحل باید با جزئیات انگشتر کاساندرا خود آشنا باشید.
رمزگذاری میانگره کاساندرا را فعال کنید
برای فعال کردن رمزگذاری میانگره Cassandra مراحل زیر را دنبال کنید:
با دنبال کردن مراحل موجود در پیوست برای ایجاد یک کلید و گواهی خودامضا، گواهیهای سرور ایجاد کنید.
اگر از Edge برای Private Cloud در یک سیستم عامل دارای FIPS استفاده می کنید، از BouncyCastle FIPS Keystore (BCFKS) استفاده کنید. برای نکاتی در مورد کار با keystore نوع BCFKS به پیوست زیر مراجعه کنید.
مراحل زیر فرض می کنند که
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 # 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
متعلق به کاربر 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 شروع شده است، گزارش های سیستم را برای پیام زیر بررسی کنید:
Internode messaging enabled TLS protocols Internode messaging enabled cipher suites
چرخش گواهی را انجام دهید
برای چرخاندن گواهی ها، مراحل زیر را دنبال کنید:
- گواهی را برای هر جفت کلید تولید شده منحصربهفرد ( به پیوست مراجعه کنید) به یک 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
که در آن
NEW_KEYSTORE_PATH
مسیر دایرکتوری است که فایل ذخیره کلید در آن قرار دارد وNEW_KEYSTORE_PASSWORD
رمز عبور ذخیره کلیدی است که هنگام ایجاد گواهی ها تنظیم شده است، همانطور که در پیوست توضیح داده شده است. - سرویس کاساندرا را متوقف کنید:
/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
کار با کلیدهای BCFKS برای سیستم عامل های مجهز به FIPS
هنگام کار با سیستم عامل های دارای FIPS، از BouncyCastle FIPS Keystores (BCFKS) استفاده کنید. بخش زیر نحوه کار با کلیدهای نوع BCFKS را شرح می دهد. سایر مراحل کار با ذخیرهسازی کلید (مانند مالکیت فایل، مکان فایل و موارد دیگر) همانطور که در این پیوست ذکر شده است، باقی میماند.
برای ایجاد یک keystore از نوع BCFKS، از دستور زیر استفاده کنید:
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
توجه: رمز عبور keystore و رمز عبور کلید باید یکسان باشد.
توجه: jar bc-fips
ارسال شده توسط Apigee قابل استفاده است یا همان jar را می توان از مخازن BouncyCastle دانلود کرد. برای جزئیات بیشتر در مورد نحوه ایجاد یک فروشگاه کلید BCFKS به مستندات BouncyCastle مراجعه کنید.
گواهی را به یک فایل جداگانه صادر کنید:
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
گواهی تولید شده node0.cer
را به Truststore گره وارد کنید:
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