הצפנה בין צמתים (או מצומת לצומת) מגינה על נתונים שעוברים בין צמתים באשכול באמצעות TLS. בדף הזה מוסבר איך להפעיל הצפנה בין צמתים של Cassandra באמצעות TLS ב-Edge for Private Cloud. כדי לבצע את השלבים האלה, אתם צריכים להכיר את הפרטים של טבעת Cassandra.
הפעלת הצפנה בין צמתים של Cassandra
כדי להפעיל הצפנה בין צמתים של Cassandra, מבצעים את הפעולות הבאות בכל הצמתים באשכול. צריך להפיץ אישורים ציבוריים של כל צומת לכל הצמתים.
אחרי שתעשו את זה, כל צומת יכיל אישורים
node0.cer, node1.cer וכו' במאגר האישורים שלו. כל צומת יכיל רק את המפתח הפרטי שלו במאגר המפתחות שלו. לדוגמה, node0 יכיל רק את node0.pem במאגר המפתחות שלו. צריך להפעיל את ההצפנה בכל צומת, אחד אחרי השני.
כדי להפעיל הצפנה בין צמתים של Cassandra:
כדי ליצור אישורי שרת, פועלים לפי השלבים שמפורטים בנספח ליצירת מפתח ואישור בחתימה עצמית.
בשלבים הבאים אנחנו מניחים שיצרתם את
keystore.node0ואתtruststore.node0, וגם את הסיסמאות ל-keystore ול-truststore, כמו שמוסבר בנספח. לפני שממשיכים לשלבים הבאים, צריך ליצור את מאגר המפתחות ואת מאגר האמון כשלבים מקדימים בכל צומת.- מוסיפים את המאפיינים הבאים לקובץ
/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
- מוודאים שהקובץ
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 התחיל, בודקים אם ההודעה הבאה מופיעה ביומני המערכת:
Starting Encrypted Messaging Service on TLS port
ביצוע רוטציה של אישורים
כדי להחליף אישורים, פועלים לפי השלבים הבאים:
- מוסיפים את האישור של כל זוג מפתחות ייחודי שנוצר (ראו נספח) ל-truststore של צומת Cassandra קיים, כך שגם האישורים הישנים וגם האישורים החדשים קיימים באותו truststore:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
כאשר
NEW_ALIASהיא מחרוזת ייחודית לזיהוי הרשומה,CERTהוא שם קובץ האישור שצריך להוסיף ו-EXISTING_TRUSTSTOREהוא השם של מאגר ה-truststore הקיים בצומת Cassandra. - משתמשים בכלי העתקה, כמו scp, כדי להפיץ את מאגר האמון לכל צומתי Cassandra באשכול, ומחליפים את מאגר האמון הקיים שנמצא בשימוש בכל צומת.
- מבצעים הפעלה מחדש הדרגתית של האשכול כדי לטעון את מאגר ה-truststore החדש וליצור אמון במפתחות החדשים לפני שהם מוצבים:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- בכל צומת של Cassandra באשכול, מעדכנים את המאפיינים שמוצגים למטה לערכים החדשים של מאגר המפתחות בקובץ cassandra.properties:
conf_cassandra_keystore=NEW_KEYSTORE_PATH conf_cassandra_keystore_password=NEW_KEYSTORE_PASSOWRD
where
NEW_KEYSTORE_PATHis the path to the directory where the keystore file is located andNEW_KEYSTORE_PASSWORDis the keystore password set when the certificates were created, as explained in the Appendix. - Stop the Cassandra service:
/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 |
ה-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ל-truststore של הצומת:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
הפקודה שלמעלה מבקשת מכם להגדיר סיסמה. זו הסיסמה של ה-truststore, והיא יכולה להיות שונה מהסיסמה של ה-keystore שהגדרתם קודם. אם מוצגת בקשה לתת אמון באישור, מזינים
yes. - משתמשים ב-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
- להצפנה מצומת לצומת, מעתיקים את הקובץ
node0.cerלכל צומת ומייבאים אותו למאגר ה-truststore של כל צומת.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- משתמשים ב-
keytool -listכדי לבדוק אם יש אישורים בקובצי ה-keystore וה-truststore:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0