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

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

تفعيل تشفير Cassandra internode

لتفعيل تشفير 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 مملوك لمستخدم apigee:
    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. أضِف الشهادة لكل مفتاحا التشفير فريد تم إنشاؤه (راجِع الملحق) إلى مخزن الثقة لعقدة Cassandra الحالية، بحيث تتوفّر كل من الشهادات القديمة والشهادات الجديدة في مخزن الثقة نفسه:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE

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

  2. استخدِم أداة نسخ، مثل scp، لتوزيع مخزن الثقة على جميع عُقد Cassandra في المجموعة مع استبدال مخزن الثقة الحالي الذي تستخدمه كل عقدة.
  3. أجرِ إعادة تشغيل متجددة للمجموعة لتحميل مخزن الثقة الجديد وإنشاء الثقة للمفاتيح الجديدة قبل وضعها:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. On each Cassandra node in the cluster, update the properties shown below to the new keystore values in the cassandra.properties file:
    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

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

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