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

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

تفعيل التشفير بين عُقد Cassandra

اتّبِع الخطوات التالية لتفعيل التشفير بين عُقد Cassandra:

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

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

  2. أضِف السمات التالية إلى الملف /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
      
  3. تأكَّد من أنّ مستخدم apigee هو مالك الملف 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)، تحقَّق من سجلّات النظام بحثًا عن الرسالة التالية:
    Internode messaging enabled TLS protocols
    Internode messaging enabled cipher suites
    

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

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

  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. على كل عُقدة من عُقد 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 هي كلمة مرور ملف تخزين المفاتيح التي تم ضبطها عند إنشاء الشهادات، كما هو موضّح في الملحق.

  5. أوقِف خدمة Cassandra:
    /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 للبحث عن الشهادات في ملفَي تخزين المفاتيح وتخزين الشهادات الموثوق بها:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0