تفعيل تشفير الكاساندرا الداخلي

يحمي التشفير الداخلي (أو من عقدة إلى عقدة) البيانات التي تنتقل بين عُقد في مجموعة عنقودية باستخدام بروتوكول أمان طبقة النقل (TLS). تشرح هذه الصفحة كيفية تفعيل تشفير العُقد الداخلي لـ Cassandra باستخدام بروتوكول أمان طبقة النقل (TLS) على Edge في السحابة الإلكترونية الخاصة لتنفيذ هذه الخطوات، يجب أن تكون على دراية بتفاصيل جهاز Cassandra. خاتم

تفعيل تشفير العُقد الداخلي لـ Cassandra

لتمكين تشفير عقدة Cassandra، اتبع الإجراء أدناه على جميع العقد في تجميع. تحتاج إلى توزيع الشهادات العامة لكل عقدة على جميع العُقد. بعد ذلك، ستحتوي كل عقدة على شهادات. "node0.cer" و"node1.cer" وما إلى ذلك في المتجر الموثوق به. ستحدث كل عقدة فقط سيحتوي على مفتاحه الخاص في ملف تخزين المفاتيح. على سبيل المثال، سيحتوي node0 على node0.pem فقط في ملف تخزين المفاتيح. تحتاج إلى تفعيل التشفير على كل عقدة، واحدة تلو الأخرى.

اتبع هذه الخطوات لتمكين تشفير عقدة Cassandra:

  1. أنشِئ شهادات الخادم باتّباع الخطوات الواردة في الملحق. لإنشاء مفتاح موقَّع ذاتيًا والشهادة.

    تفترض الخطوات التالية أنك أنشأت keystore.node0. وtruststore.node0، بالإضافة إلى كلمات مرور ملف تخزين المفاتيح وملف تخزين الثقة، كما هو موضّح في الملحق. يجب إنشاء ملف تخزين المفاتيح وملف تخزين الثقة كخطوات أولية في كل عقدة قبل المتابعة مع الخطوات التالية.

  2. أضِف السمات التالية إلى /opt/apigee/customer/application/cassandra.properties. الملف. إذا لم يكن الملف متوفّرًا، أنشئه.
    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
  3. يُرجى التأكُّد من أنّ الملف cassandra.properties يملكه مستخدم واجهة برمجة التطبيقات:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties

نفذ الخطوات التالية على كل عقدة Cassandra، واحدة تلو الأخرى، حتى تدخل التغييرات حيز التنفيذ بدون التسبب في أي توقُّف للمستخدمين:

  1. أوقِف خدمة Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. أعِد تشغيل خدمة Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. لتحديد ما إذا كانت خدمة تشفير بروتوكول أمان طبقة النقل (TLS) قد بدأت، تحقق من سجلات النظام للرسالة التالية:
    Starting Encrypted Messaging Service on TLS port

إجراء تدوير الشهادة

لعرض الشهادات، اتّبِع الخطوات التالية:

  1. أضِف الشهادة لكل مفتاحَي تشفير فريدَين تم إنشاؤهما (راجِع الملحق) إلى كاساندرا الحالية مخزن الثقة للعقدة، بحيث توجد الشهادات القديمة والشهادات الجديدة في نفس Truststore:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE

    حيث يكون NEW_ALIAS سلسلة فريدة لتحديد الإدخال، تكون CERT اسم الشهادة ملف لإضافته، وEXISTING_TRUSTSTORE هو اسم Truststore الحالي في عقدة Cassandra.

  2. استخدام أداة نسخ، مثل scp، لتوزيع Truststore على جميع عُقد Cassandra في المجموعة استبدال Truststore الحالي قيد الاستخدام بواسطة كل عقدة.
  3. إجراء إعادة تشغيل للمجموعة لتحميل مخزن الثقة الجديد وبناء الثقة في مفاتيح جديدة قبل أن تكون في مكانها الصحيح:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. في كل عقدة Cassandra في المجموعة، عدِّل السمات المعروضة أدناه إلى ملف تخزين المفاتيح الجديد القيم في ملف cassandra.سمات cassandra.
    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 and NEW_KEYSTORE_PASSWORD is the keystore password set when the certificates were created, as explained in the Appendix.

  5. Stop the Cassandra service:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  6. أعِد تشغيل خدمة Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. عندما يتم إنشاء الاتصال بنجاح بين جميع العقد، انتقل إلى عقدة Cassandra. ملاحظة: المتابعة إلى العُقدة التالية فقط في حال إتمام الاتصال بنجاح التي تم إنشاؤها بين جميع العقد.

الملحق

يوضح المثال التالي كيفية إعداد شهادات الخادم اللازمة لإجراء خطوات تشفير العُقد الداخلية. تستخدم الأوامر المعروضة في المثال المَعلمات التالية:

المعلمة الوصف
node0 أي سلسلة فريدة لتحديد العقدة.
keystore.node0 اسم ملف تخزين مفاتيح تفترض الأوامر أنّ هذا الملف موجود في الدليل الحالي.
keypass يجب أن يكون مفتاح المرور متطابقًا في كل من ملف تخزين المفاتيح والمفتاح.
dname يحدّد عنوان IP الخاص بـ node0 باعتباره 10.128.0.39.
-validity القيمة المحدَّدة في هذه العلامة تجعل مفتاحَي التشفير الذي تم إنشاؤهما صالحًا لمدة 10 سنوات.
  1. انتقِل إلى الدليل التالي:
    cd /opt/apigee/data/apigee-cassandra
  2. شغِّل الأمر التالي لإنشاء ملف باسم 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"

    ملاحظة مُهمّة: احرص على أن تكون كلمة مرور المفتاح هي نفسها كلمة مرور ملف تخزين المفاتيح.

  3. تصدير الشهادة إلى ملف منفصل:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. يُرجى التأكد من أنّه بإمكان مستخدم apigee فقط قراءة الملف وليس من قِبل أي شخص آخر:
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. استيراد الشهادة التي تم إنشاؤها node0.cer إلى مخزن الثقة للعقدة:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    يطلب منك الأمر أعلاه ضبط كلمة مرور. هذه هي كلمة مرور Truststore ويمكن أن عن كلمة مرور ملف تخزين المفاتيح التي ضبطتها سابقًا. إذا طُلب منك الوثوق بهذه الشهادة، أدخِل yes.

  6. استخدِم opensl لإنشاء ملف 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
  7. لإجراء التشفير من عُقدة إلى عُقدة، انسخ ملف node0.cer إلى كل عُقدة ثم استورِده. إلى مخزن الثقة لكل عقدة.
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. استخدِم keytool -list للتحقّق من الشهادات في ملف تخزين المفاتيح وملفات التخزين الموثوقة:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0