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

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

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

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

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

    مراحل زیر فرض می‌کنند که شما keystore.node0 و truststore.node0 را ایجاد کرده‌اید، همچنین گذرواژه‌های keystore و truststore را، همان‌طور که در پیوست توضیح داده شده است. پیش‌از ادامه دادن به مراحل بعدی، باید فروشگاه کلید و فروشگاه اعتماد به‌عنوان مراحل مقدماتی در هر گره ایجاد شود.

  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. مطمئن شوید که فایل 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 شروع شده است یا نه، گزارش‌های سیستم را برای پیام زیر بررسی کنید:
    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 نام truststore موجود در گره Cassandra است.

  2. از ابزار کپی، مانند scp، برای توزیع truststore به همه گره‌های Cassandra در خوشه استفاده کنید و truststore موجود درحال استفاده توسط هر گره را جایگزین کنید.
  3. قبل‌از اینکه کلیدهای جدید در جای خود قرار گیرند، برای بار کردن truststore جدید و ایجاد اعتماد برای کلیدهای جدید، بازراه‌اندازی چرخشی خوشه را انجام دهید:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
    
  4. در هر گره Cassandra در خوشه، ویژگی‌های نشان‌داده‌شده در زیر را به مقادیر keystore جدید در فایل cassandra.properties به‌روز کنید:
    conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH
    conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
      

    که NEW_KEYSTORE_PATH مسیر دایرکتوری‌ای است که فایل keystore در آن قرار دارد و NEW_KEYSTORE_PASSWORD گذرواژه keystore است که هنگام ایجاد گواهی‌ها تنظیم شده است، همان‌طور که در پیوست توضیح داده شده است.

  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 گذرکلید باید برای 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