הצפנה בין צמתים (או מצומת לצומת) מגינה על נתונים שעוברים בין צמתים באשכול באמצעות TLS. בדף הזה מוסבר איך להפעיל את ההצפנה הפנימית של Cassandra באמצעות TLS ב-Edge עבור ענן פרטי. כדי לבצע את השלבים האלה, עליכם להכיר את הפרטים של Cassandra צלצול.
הפעלת הצפנה פנימית של Cassandra
כדי להפעיל הצפנה פנימית של Cassandra:
אפשר ליצור אישורי שרת לפי השלבים שמפורטים בנספח כדי ליצור מפתח בחתימה עצמית ואישור.
השלבים הבאים מניחים שיצרת את
keystore.node0
ו-truststore.node0
, וכן את הסיסמאות של מאגר המפתחות ושל מאגר האישורים, כפי שמוסבר בנספח. לפני שממשיכים, צריך ליצור את ה-Keystore ואת ה-Truststore בתור שלבים ראשוניים בכל צומת לגבי השלבים הבאים.- צריך להוסיף את המאפיינים הבאים אל
/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
- צריך לוודא שהקובץ
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 של הצומת, כך שגם האישורים הישנים וגם האישורים החדשים יהיו באותו מקום
אמון:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
כאשר
NEW_ALIAS
הוא מחרוזת ייחודית לזיהוי הרשומה,CERT
הוא שם האישור קובץ להוספה, ו-EXISTING_TRUSTSTORE
הוא השם של ה-Truststore הקיים בצומת Cassandra. - להשתמש בכלי להעתקה, כמו scp, כדי להפיץ את ה-Truststore לכל הצמתים של 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
where
NEW_KEYSTORE_PATH
is the path to the directory where the keystore file is located andNEW_KEYSTORE_PASSWORD
is 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
- אחרי שנוצרה תקשורת בין כל הצמתים, ממשיכים לשלב הבא צומת של קסנדרה. הערה: אם התקשורת מצליחה, ממשיכים לצומת הבא רק נוצרה בין כל הצמתים.
נספח
הדוגמה הבאה מסבירה איך להכין אישורי שרת שנדרשים כדי לבצע את שלבי הצפנה בין צמתים. הפקודות שבדוגמה משתמשות בפרמטרים הבאים:
פרמטר | תיאור |
---|---|
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
שנוצר ל-Truststore של הצומת: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
- כדי לבדוק אם יש אישורים בקובצי מאגר המפתחות ובקובצי Truststore, משתמשים ב-
keytool -list
:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0