يحمي التشفير بين العُقد (أو من عُقدة إلى أخرى) البيانات التي تنتقل بين العُقد في مجموعة باستخدام بروتوكول أمان طبقة النقل (TLS). توضّح هذه الصفحة كيفية تفعيل التشفير بين عُقد Cassandra باستخدام بروتوكول أمان طبقة النقل (TLS) على Edge for Private Cloud. لتنفيذ هذه الخطوات، يجب أن تكون على دراية بتفاصيل حلقة Cassandra.
تفعيل التشفير بين عُقد Cassandra
اتّبِع الخطوات التالية لتفعيل التشفير بين عُقد Cassandra:
أنشئ شهادات الخادم باتّباع الخطوات الواردة في الملحق لإنشاء مفتاح وشهادة موقّعتَين ذاتيًا.
تفترض الخطوات التالية أنّك أنشأت
keystore.node0وtruststore.node0، بالإضافة إلى كلمات مرور ملف تخزين المفاتيح وملف تخزين الشهادات الموثوق بها، كما هو موضّح في الملحق. يجب إنشاء ملف تخزين المفاتيح وملف تخزين الشهادات الموثوق بها كخطوات أولية على كل عُقدة قبل المتابعة إلى الخطوات التالية.- أضِف السمات التالية إلى الملف
/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 - تأكَّد من أنّ مستخدم apigee هو مالك الملف
cassandra.properties: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هو اسم ملف تخزين الشهادات الموثوق بها الحالي على عُقدة Cassandra. - استخدِم أداة نسخ، مثل scp، لتوزيع ملف تخزين الشهادات الموثوق بها على جميع عُقد Cassandra في المجموعة، مع استبدال ملف تخزين الشهادات الموثوق بها الحالي الذي تستخدمه كل عُقدة.
- أجرِ إعادة تشغيل متتابعة للمجموعة لتحميل ملف تخزين الشهادات الموثوق بها الجديد وإنشاء الثقة في المفاتيح الجديدة قبل وضعها:
/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 |
تؤدي القيمة التي تم ضبطها على هذه العلامة إلى أن يكون مفتاحا التشفير الذي تم إنشاؤه صالحًا لمدة 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"
ملاحظة مهمة: تأكَّد من أنّ كلمة مرور المفتاح هي نفسها كلمة مرور ملف تخزين المفاتيح.
- صدِّر الشهادة إلى ملف منفصل:
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إلى ملف تخزين الشهادات الموثوق بها للعُقدة:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
يطلب منك الأمر أعلاه ضبط كلمة مرور. هذه هي كلمة مرور ملف تخزين الشهادات الموثوق بها ويمكن أن تكون مختلفة عن كلمة مرور ملف تخزين المفاتيح التي ضبطتها سابقًا. إذا طُلب منك الوثوق بالشهادة، أدخِل
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للبحث عن الشهادات في ملفَي تخزين المفاتيح وتخزين الشهادات الموثوق بها:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0