การเข้ารหัส Internode (หรือแบบโหนดต่อโหนด) จะปกป้องข้อมูลที่รับส่งระหว่างโหนดในคลัสเตอร์โดยใช้ TLS หน้านี้จะอธิบายวิธีเปิดใช้การเข้ารหัสระหว่างโหนดของ Cassandra โดยใช้ TLS ใน Edge สำหรับ Private Cloud หากต้องการทำตามขั้นตอนเหล่านี้ คุณต้องคุ้นเคยกับรายละเอียดของ Cassandra Ring
เปิดใช้การเข้ารหัส Internode ของ Cassandra
หากต้องการเปิดใช้การเข้ารหัสระหว่างโหนดของ Cassandra ให้ทำตามขั้นตอนด้านล่างในโหนดทั้งหมดในคลัสเตอร์ คุณต้องแจกจ่ายใบรับรองสาธารณะของแต่ละโหนดไปยังโหนดทั้งหมด
หลังจากดำเนินการแล้ว แต่ละโหนดจะมีใบรับรอง node0.cer, node1.cer ฯลฯ ใน Truststore แต่ละโหนดจะมีเฉพาะคีย์ส่วนตัวของตัวเองใน Keystore เช่น node0 จะมีเฉพาะ node0.pem ใน Keystore คุณต้องเปิดใช้การเข้ารหัสในแต่ละโหนดทีละโหนด
ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้การเข้ารหัส Internode ของ Cassandra
สร้างใบรับรองเซิร์ฟเวอร์โดยทำตามขั้นตอนในภาคผนวกเพื่อสร้างคีย์และใบรับรองที่รับรองด้วยตนเอง
ขั้นตอนต่อไปนี้จะถือว่าคุณได้สร้าง
keystore.node0และtruststore.node0รวมถึงรหัสผ่าน Keystore และ Truststore ตามที่อธิบายไว้ในภาคผนวกแล้ว ควรสร้าง 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 เพื่อกระจาย Truststore ไปยังโหนด Cassandra ทั้งหมดในคลัสเตอร์ โดยแทนที่ Truststore ที่มีอยู่ซึ่งแต่ละโหนดใช้อยู่
- ทำการรีสตาร์ทแบบต่อเนื่องของคลัสเตอร์เพื่อโหลด Truststore ใหม่และสร้างความเชื่อถือสำหรับคีย์ใหม่ก่อนที่จะนำไปใช้ โดยทำดังนี้
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- ในโหนด Cassandra แต่ละโหนดในคลัสเตอร์ ให้อัปเดตพร็อพเพอร์ตี้ที่แสดงด้านล่างเป็นค่า Keystore ใหม่ในไฟล์ 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 |
ชื่อ Keystore คำสั่งจะถือว่าไฟล์นี้อยู่ในไดเรกทอรีปัจจุบัน |
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"
สำคัญ: ตรวจสอบว่ารหัสผ่านคีย์เหมือนกับรหัสผ่าน Keystore
- ส่งออกใบรับรองไปยังไฟล์แยกต่างหาก โดยทำดังนี้
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