رمزگذاری بین گرهی (یا گره به گره) از دادههایی که بین گرههای یک خوشه منتقل میشوند بااستفاده از TLS محافظت میکند. این صفحه نحوه فعال کردن رمزگذاری بین گرهی Cassandra بااستفاده از «امنیت لایه انتقال» در Edge for Private Cloud را توضیح میدهد. برای انجام این مراحل، باید با جزئیات حلقه Cassandra خود آشنا باشید.
فعال کردن رمزگذاری بین گرهی Cassandra
برای فعال کردن رمزگذاری بین گرهی Cassandra، این مراحل را دنبال کنید:
با دنبال کردن مراحل پیوست برای ایجاد کلید و گواهی خودامضا، گواهیهای سرور تولید کنید.
اگر از Edge for Private Cloud در سیستمعاملی با قابلیت FIPS استفاده میکنید، از BouncyCastle FIPS Keystore (BCFKS) استفاده کنید. برای دریافت نکتههایی درباره کار با انبار کلید نوع 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، یکییکی، اجرا کنید تا تغییرات بدون ایجاد وقفه برای کاربران اعمال شود:
- سرویس 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
انجام چرخش گواهینامه
برای چرخش گواهینامهها، این مراحل را دنبال کنید:
- گواهینامه هر جفت کلید تولیدشده یکتا (به پیوست مراجعه کنید) را به فروشگاه مطمئن گره Cassandra موجود اضافه کنید، بهطوریکه هم گواهینامههای قدیمی و هم گواهینامههای جدید در یک فروشگاه مطمئن وجود داشته باشند:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
که در آن
NEW_ALIASرشتهای منحصربهفرد برای شناسایی ورودی،CERTنام فایل گواهی برای افزودن، وEXISTING_TRUSTSTOREنام truststore موجود در گره Cassandra است. - از ابزار کپی، مانند scp، برای توزیع truststore به همه گرههای Cassandra در خوشه استفاده کنید و truststore درحال استفاده در هر گره را جایگزین کنید.
- پیشاز اینکه کلیدهای جدید در جای خود قرار بگیرند، برای بار کردن truststore جدید و ایجاد اعتماد برای کلیدهای جدید، بازراهاندازی چرخشی خوشه را انجام دهید:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- در هر گره Cassandra در خوشه، ویژگیهای نشاندادهشده در زیر را به مقادیر جدید انبار کلید در فایل 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گذرواژه انبار کلید است که هنگام ایجاد گواهینامهها تنظیم شده است، همانطور که در پیوست توضیح داده شده است. - سرویس Cassandra را متوقف کنید:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- سرویس Cassandra را بازراهاندازی کنید:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- وقتی ارتباط بین همه گرهها باموفقیت برقرار شد، به گره Cassandra بعدی بروید. توجه: فقط درصورتی به گره بعدی بروید که ارتباط بین همه گرهها باموفقیت برقرار شده باشد.
ضمیمه
مثال زیر نحوه آماده کردن گواهینامههای سرور موردنیاز برای انجام مراحل رمزگذاری بین گرهی را توضیح میدهد. فرمانهای نشاندادهشده در مثال از پارامترهای زیر استفاده میکنند:
| پارامتر | شرح |
|---|---|
node0 |
هر رشته یکتایی برای شناسایی گره. |
keystore.node0 |
نام فروشگاه کلید. فرمانها فرض میکنند که این فایل در دایرکتوری فعلی است. |
keypass |
گذرواژه کلید باید برای هم کلیدفروشی و هم کلید یکسان باشد. |
dname |
نشانی IP node0 را بهعنوان 10.128.0.39 شناسایی میکند. |
-validity |
مقدار تنظیمشده در این پرچم باعث میشود جفت کلید تولیدشده برای ۱۰ سال معتبر باشد. |
- به فهرست راهنمای زیر بروید:
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را در هر گره کپی کنید و آن را به مخزن اعتماد هر گره وارد کنید.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 را توضیح میدهد. مراحل دیگر کار با مخزن کلیدها (مانند مالکیت فایل، مکان فایل، و غیره) همانطور که در این پیوست ذکر شده است، بدون تغییر باقی میماند.
برای تولید یک انبار کلید از نوع 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
توجه: گذرواژه ذخیرهگاه کلید و گذرواژه کلید باید یکسان باشند.
توجه: میتوان از کوزه bc-fips که Apigee ارسال کرده است استفاده کرد، یا همان کوزه را میتوان از مخازن 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