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

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

تفعيل تشفير Cassandra داخلي

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

اتَّبِع الخطوات التالية لتمكين تشفير Cassandra التعليمي:

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

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

  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. لتحديد ما إذا كانت خدمة تشفير بروتوكول أمان طبقة النقل قد بدأت، تحقَّق من سجلّات النظام بحثًا عن الرسالة التالية:
    Starting Encrypted Messaging Service on TLS port

تنفيذ تدوير الشهادة

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

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

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

  2. استخدِم أداة نسخ، مثل scp، لتوزيع Truststore على جميع عُقد Cassandra في المجموعة، بدلاً من مخزن الثقة الحالي المستخدَم في كل عقدة.
  3. نفِّذ عملية إعادة تشغيل متتالية للمجموعة لتحميل مخزن الثقة الجديد وإنشاء ثقة للمفاتيح الجديدة قبل وضعها في مكانها:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. في كل عقدة Cassandra في المجموعة، عدِّل السمات المعروضة أدناه إلى قيم ملف تخزين المفاتيح الجديدة في ملف cassandra.properties:
    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. تأكَّد من أنّ الملف قابل للقراءة من قِبل مستخدم واجهة برمجة التطبيقات فقط وليس لأي شخص آخر:
    $ 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 إلى كل عقدة واستيراده إلى Truststore لكل عقدة.
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. يمكنك استخدام keytool -list للتحقق من الشهادات في ملف تخزين المفاتيح وملفات Truststore:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0