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

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

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

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

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

    اگر از Edge برای Private Cloud در یک سیستم عامل دارای FIPS استفاده می کنید، از BouncyCastle FIPS Keystore (BCFKS) استفاده کنید. برای نکاتی در مورد کار با keystore نوع 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. سرویس کاساندرا را متوقف کنید:
    /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. گواهی را برای هر جفت کلید تولید شده منحصربه‌فرد ( به پیوست مراجعه کنید) به یک Truststore گره Cassandra اضافه کنید، به طوری که گواهی‌های قدیمی و گواهی‌های جدید در یک Truststore وجود داشته باشند:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE
    

    که در آن NEW_ALIAS یک رشته منحصر به فرد برای شناسایی ورودی است، CERT نام فایل گواهی برای افزودن است، و EXISTING_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_server_encryption_keystore=NEW_KEYSTORE_PATH
    conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
      

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

  5. سرویس کاساندرا را متوقف کنید:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
    
  6. راه اندازی مجدد سرویس Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
    
  7. هنگامی که ارتباط بین همه گره ها با موفقیت برقرار شد، به گره کاساندرا بعدی بروید. توجه: فقط در صورتی به گره بعدی بروید که ارتباط بین همه گره ها با موفقیت برقرار شود.

ضمیمه

مثال زیر نحوه تهیه گواهی های سرور مورد نیاز برای انجام مراحل رمزگذاری میانگره را توضیح می دهد. دستورات نشان داده شده در مثال از پارامترهای زیر استفاده می کنند:

پارامتر توضیحات
node0 هر رشته منحصر به فرد برای شناسایی گره.
keystore.node0 یک نام فروشگاه کلید. دستورات فرض می کنند که این فایل در دایرکتوری فعلی است.
keypass پاس کلید باید هم برای keystore و هم برای key یکسان باشد.
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"

    مهم: مطمئن شوید که رمز عبور کلید با رمز عبور 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

کار با کلیدهای BCFKS برای سیستم عامل های مجهز به FIPS

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

برای ایجاد یک keystore از نوع 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

توجه: رمز عبور keystore و رمز عبور کلید باید یکسان باشد.

توجه: jar bc-fips ارسال شده توسط Apigee قابل استفاده است یا همان jar را می توان از مخازن 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