فعال کردن رمزگذاری بین گرهی Cassandra

رمزگذاری بین‌گره‌ای (یا گره به گره) از داده‌هایی که بین گره‌ها در خوشه جابه‌جا می‌شوند بااستفاده از TLS محافظت می‌کند. این صفحه نحوه فعال کردن رمزگذاری بین‌گره‌ای Cassandra را بااستفاده از TLS در Edge برای Private Cloud توضیح می‌دهد. برای انجام این مراحل، باید با جزئیات حلقه Cassandra خود آشنا باشید.

فعال کردن رمزگذاری بین‌گره‌ای Cassandra

برای فعال کردن رمزگذاری بین‌گره‌ای Cassandra، مراحل زیر را در همه گره‌های خوشه دنبال کنید. باید گواهینامه‌های عمومی هر گره را به همه گره‌ها توزیع کنید. پس‌از انجام این کار، هر گره حاوی گواهینامه‌های node0.cer، node1.cer و غیره در truststore خود خواهد بود. هر گره فقط کلید خصوصی خودش را در مخزن کلید خود خواهد داشت. برای مثال، node0 فقط حاوی node0.pem در مخزن کلید خود خواهد بود. باید رمزگذاری را در هر گره، یکی یکی، فعال کنید.

برای فعال کردن رمزگذاری بین‌گره‌ای Cassandra، این مراحل را دنبال کنید:

  1. با دنبال کردن مراحل موجود در پیوست، گواهی‌های سرور را تولید کنید تا کلید و گواهی خودامضا ایجاد شود.

    مراحل زیر فرض می‌کنند که شما keystore.node0 و truststore.node0، و همچنین گذرواژه‌های keystore و truststore را همان‌طور که در پیوست توضیح داده شده است، ایجاد کرده‌اید. The keystore and truststore should be created as preliminary steps on each node before proceeding with next steps.

  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. گواهی هر جفت کلید تولیدشده یکتا را (به پیوست مراجعه کنید) به truststore گره Cassandra موجود اضافه کنید، به‌طوری‌که هم گواهی‌های قدیمی و هم گواهی‌های جدید در همان 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 در خوشه، ویژگی‌های نشان‌داده‌شده در زیر را به مقادیر جدید keystore در فایل 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 نام keystore. فرمان‌ها فرض می‌کنند این فایل در دایرکتوری فعلی است.
keypass گذرکلید باید برای keystore و کلید یکسان باشد.
dname نشانی IP مربوط به node0 را به‌عنوان 10.128.0.39 شناسایی می‌کند.
-validity مقدار تنظیم‌شده روی این پرچم باعث می‌شود جفت کلید تولیدشده برای ۱۰ سال معتبر باشد.
  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"

    مهم: مطمئن شوید گذرواژه کلید با گذرواژه keystore یکسان باشد.

  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 را به truststore گره وارد کنید:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    فرمان بالا از شما می‌خواهد گذرواژه‌ای تنظیم کنید. این گذرواژه truststore است و می‌تواند با گذرواژه keystore که قبلاً تنظیم کرده‌اید متفاوت باشد. اگر از شما خواسته شد به گواهی اعتماد کنید، 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 را در هر گره کپی کنید و آن را به truststore هر گره وارد کنید.
    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