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

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

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

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

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

    اگر از Edge for Private Cloud در سیستم‌عاملی با قابلیت FIPS استفاده می‌کنید، از BouncyCastle FIPS Keystore (BCFKS) استفاده کنید. برای دریافت نکته‌هایی درباره کار با انبار کلید نوع BCFKS، به پیوست زیر مراجعه کنید.

    مراحل زیر فرض می‌کند که 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
      
    # Set the following in FIPS enabled operating systems
    # With FIPS, older TLS protocols are disabled, so set to TLSv1.2
    conf_cassandra_server_encryption_protocol=TLSv1.2
    # With FIPS, use BCFKS keystores
    conf_cassandra_server_encryption_store_type=BCFKS
      
  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 در خوشه، ویژگی‌های نشان‌داده‌شده در زیر را به مقادیر جدید انبار کلید در فایل 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 مقدار تنظیم‌شده در این پرچم باعث می‌شود جفت کلید تولیدشده برای ۱۰ سال معتبر باشد.
  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 را در هر گره کپی کنید و آن را به مخزن اعتماد هر گره وارد کنید.
    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

کار کردن با فروشگاه‌های کلید BCFKS برای سیستم‌عامل‌های دارای FIPS

هنگام کار با سیستم‌های عامل دارای FIPS، از BouncyCastle FIPS Keystores (BCFKS) استفاده کنید. بخش زیر نحوه کار با مخازن کلید نوع BCFKS را توضیح می‌دهد. مراحل دیگر کار با مخزن کلیدها (مانند مالکیت فایل، مکان فایل، و غیره) همان‌طور که در این پیوست ذکر شده است، بدون تغییر باقی می‌ماند.

برای تولید یک انبار کلید از نوع BCFKS، از فرمان زیر استفاده کنید:

keytool -genkeypair -keyalg RSA -alias node0 -validity 365 -keystore keystore.node0 \
-storepass keypass -keypass keypass -v \
-dname "EMAILADDRESS=youremail@domain.com, CN=yourcn, OU=yourou, O=youro, L=yourl, C=yourc" \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

توجه: گذرواژه ذخیره‌گاه کلید و گذرواژه کلید باید یکسان باشند.

توجه: می‌توان از کوزه bc-fips که Apigee ارسال کرده است استفاده کرد، یا همان کوزه را می‌توان از مخازن BouncyCastle بارگیری کرد. برای جزئیات بیشتر درباره نحوه تولید کردن انبار کلید BCFKS، به اسناد BouncyCastle مراجعه کنید.

گواهینامه را به فایل جداگانه‌ای صادر کنید:

keytool -export -v -alias node0 -file node0.cer -keystore keystore.node0 -storepass keypass \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

گواهی تولیدشده node0.cer را به truststore گره وارد کنید:

keytool -import -v -alias node0 -file node0.cer -keystore truststore.node0 -storepass storepass \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS