הצפנה בין צמתים (או מצומת לצומת) מגינה על נתונים שעוברים בין צמתים באשכול באמצעות TLS. בדף הזה מוסבר איך מפעילים הצפנה בין צמתים ב-Cassandra באמצעות TLS ב-Edge for Private Cloud. כדי לבצע את השלבים האלה, צריך להכיר את הפרטים של הטבעת של Cassandra.
הפעלת הצפנה בין צמתים ב-Cassandra
כדי להפעיל את ההצפנה בין הצמתים ב-Cassandra:
יוצרים אישורי שרת לפי השלבים שמפורטים בנספח כדי ליצור מפתח ואישור בחתימה עצמית.
אם אתם משתמשים ב-Edge for Private Cloud במערכת הפעלה שתומכת ב-FIPS, צריך להשתמש ב-BouncyCastle FIPS Keystore (BCFKS). בנספח שבהמשך מפורטות טיפים לעבודה עם מאגר מפתחות מסוג BCFKS.
בשלבים הבאים אנו מביאים בחשבון שיצרתם את
keystore.node0
ו-truststore.node0
, וגם את הסיסמאות של מאגר המפתחות ומאגר האמון, כפי שמוסבר בנספח. צריך ליצור את מאגר המפתחות ואת מאגר האמון כשלבים מוקדמים בכל צומת לפני שממשיכים לשלבים הבאים.- מוסיפים את המאפיינים הבאים לקובץ
/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
- צריך לוודא שהקובץ
cassandra.properties
נמצא בבעלות של משתמש ה-apigee:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
צריך לבצע את השלבים הבאים בכל צומת של Cassandra, בנפרד, כך שהשינויים ייכנסו לתוקף בלי לגרום לזמן השבתה למשתמשים:
- מפסיקים את שירות Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- מפעילים מחדש את שירות Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- כדי לבדוק אם שירות ההצפנה ב-TLS הופעל, עליכם לבדוק ביומני המערכת את ההודעה הבאה:
Internode messaging enabled TLS protocols Internode messaging enabled cipher suites
ביצוע רוטציית אישורים
כדי לבצע רוטציית אישורים, יש לבצע את השלבים הבאים:
- מוסיפים את האישור לכל זוג מפתחות ייחודי שנוצר (מידע נוסף זמין בנספח) למאגר האמון של צומת Cassandra, כך שגם האישורים הישנים וגם האישורים החדשים יהיו באותו מאגר אמון:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
כאשר
NEW_ALIAS
היא מחרוזת ייחודית לזיהוי הרשומה,CERT
הוא השם של קובץ האישור שרוצים להוסיף ו-EXISTING_TRUSTSTORE
הוא השם של מאגר האמון הקיים בצומת Cassandra. - משתמשים בכלי להעתקה, כמו scp, כדי להפיץ את מאגר האישורים לכל צמתים של Cassandra באשכול, ומחליפים את מאגר האישורים הקיים שבשימוש בכל צומת.
- מבצעים הפעלה מחדש מתגלגלת של האשכול כדי לטעון את ה-Truststore החדש וליצור אמון במפתחות החדשים לפני שהם מחליפים אותם:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- בכל צומת של 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
היא הסיסמה של מאגר המפתחות שהוגדרה כשיצרתם את האישורים, כפי שמוסבר בנספח. - הפסקת השירות של Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- מפעילים מחדש את שירות Cassandra:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- כשהתקשורת בין כל הצמתים תתבצע בהצלחה, ממשיכים לצומת Cassandra הבא. הערה: אפשר להמשיך לצומת הבא רק אם התקשורת בין כל הצמתים בוצעה בהצלחה.
נספח
הדוגמה הבאה מסבירה איך להכין אישורי שרת שנדרשים כדי לבצע את שלבי הצפנה בין צמתים. בפקודות שמוצגות בדוגמה נעשה שימוש בפרמטרים הבאים:
פרמטר | תיאור |
---|---|
node0 |
מחרוזת ייחודית כלשהי לזיהוי הצומת. |
keystore.node0 |
שם של מאגר מפתחות. הפקודות מתבססות על ההנחה שהקובץ הזה נמצא בספרייה הנוכחית. |
keypass |
כרטיס המפתחות צריך להיות זהה למאגר המפתחות ולמפתח. |
dname |
מזהה את כתובת ה-IP של node0 בתור 10.128.0.39 . |
-validity |
הערך שמוגדר בדגל הזה מאפשר לזוג המפתחות שנוצר להיות תקף למשך 10 שנים. |
- עוברים לספרייה הבאה:
cd /opt/apigee/data/apigee-cassandra
- מריצים את הפקודה הבאה כדי ליצור קובץ בשם
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"
חשוב: חשוב לוודא שסיסמת המפתח זהה לסיסמה של מאגר המפתחות.
- מייצאים את האישור לקובץ נפרד:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- מוודאים שהקובץ קריא רק למשתמש ה-apigee ולא אף אחד אחר:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- מייבאים את האישור שנוצר
node0.cer
למאגר האמון של הצומת:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
בפקודה שלמעלה תתבקשו להגדיר סיסמה. זוהי הסיסמה ל-Truststore להיות שונה מסיסמה של מאגר המפתחות שהגדרתם קודם. אם מופיעה הנחיה לתת אמון באישור, צריך להזין
yes
. - אפשר להשתמש ב-Opensl כדי ליצור קובץ 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
- להצפנה מצומת לצומת, מעתיקים את הקובץ
node0.cer
לכל צומת ומייבאים אותו. ל-Truststore של כל צומת.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- משתמשים ב-
keytool -list
כדי לבדוק אם יש אישורים בקובצי מאגר המפתחות ומאגר האמון:$ 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
הערה: הסיסמה של מאגר המפתחות והסיסמה של המפתח צריכות להיות זהות.
הערה: אפשר להשתמש בקובץ ה-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