การเข้ารหัสระหว่างโหนด (หรือโหนดต่อโหนด) ช่วยปกป้องข้อมูลที่เดินทางระหว่างโหนดในคลัสเตอร์ การใช้ TLS หน้านี้อธิบายวิธีเปิดใช้การเข้ารหัสระหว่างโหนด Cassandra โดยใช้ TLS ใน Edge สำหรับ Private Cloud คุณต้องทำความคุ้นเคยกับรายละเอียดของ Cassandra ส่งเสียง
เปิดใช้การเข้ารหัส Internode ของ Cassandra
หากต้องการเปิดใช้งานการเข้ารหัสระหว่างโหนด Cassandra ให้ทำตามขั้นตอนด้านล่างสำหรับโหนดทั้งหมดใน
คลัสเตอร์ คุณต้องแจกจ่ายใบรับรองสาธารณะของแต่ละโหนดไปยังโหนดทั้งหมด
หลังจากดำเนินการแล้ว แต่ละโหนดจะมีใบรับรอง
node0.cer
, node1.cer
ฯลฯ ใน Truststore แต่ละโหนดจะ
มีคีย์ส่วนตัวของตัวเองใน
คีย์สโตร์ ตัวอย่างเช่น node0
จะมีเฉพาะ node0.pem
ใน
คีย์สโตร์ คุณต้องเปิดใช้การเข้ารหัสในแต่ละโหนด ครั้งละ 1 โหนด
ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้การเข้ารหัสระหว่างโหนด Cassandra
สร้างใบรับรองเซิร์ฟเวอร์โดยทำตามขั้นตอนในภาคผนวก เพื่อสร้างคีย์แบบ Self-Signed และใบรับรอง
ขั้นตอนต่อไปนี้จะถือว่าคุณได้สร้าง
keystore.node0
แล้ว และtruststore.node0
รวมถึงคีย์สโตร์และรหัสผ่าน Truststore ตามที่อธิบายไว้ในภาคผนวก คุณควรสร้างคีย์สโตร์และ 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
ดำเนินการหมุนเวียนใบรับรอง
หากต้องการหมุนเวียนใบรับรอง ให้ทำตามขั้นตอนต่อไปนี้
- เพิ่มใบรับรองสำหรับคู่คีย์ที่สร้างขึ้นที่ไม่ซ้ำกันแต่ละคู่ (ดูภาคผนวก)
ให้กับ Cassandra ที่มีอยู่
Truststore ของโหนด เพื่อให้มีทั้งใบรับรองเก่าและใบรับรองใหม่
Truststore:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
โดยที่
NEW_ALIAS
เป็นสตริงที่ไม่ซ้ำกันในการระบุรายการCERT
จะเป็น ชื่อใบรับรอง ไฟล์ที่จะเพิ่ม และEXISTING_TRUSTSTORE
คือชื่อของ Truststore ที่มีอยู่ในโหนด Cassandra - ใช้ยูทิลิตีการคัดลอก เช่น scp เพื่อกระจาย Truststore ไปยังโหนด Cassandra ทั้งหมดในคลัสเตอร์ แทนที่ Truststore ที่มีอยู่ซึ่งแต่ละโหนดใช้งานอยู่
- ดำเนินการรีสตาร์ทคลัสเตอร์อย่างต่อเนื่องเพื่อโหลด 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_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
- เมื่อสร้างการสื่อสารระหว่างโหนดทั้งหมดเรียบร้อยแล้ว ให้ไปยังขั้นตอนถัดไป โหนด 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
ที่สร้างขึ้น ไปยัง Truststore ของโหนด:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
คำสั่งข้างต้นจะขอให้คุณตั้งรหัสผ่าน นี่คือรหัสผ่าน Truststore และสามารถ ต่างจากรหัสผ่านคีย์สโตร์ที่คุณตั้งไว้ก่อนหน้านี้ หากได้รับข้อความแจ้งให้เชื่อถือใบรับรอง ป้อน
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
เพื่อตรวจสอบใบรับรองในไฟล์คีย์สโตร์และ Truststore ดังนี้$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0