การเข้ารหัสระหว่างโหนด (หรือโหนดต่อโหนด) ช่วยปกป้องข้อมูลที่ส่งระหว่างโหนดในคลัสเตอร์โดยใช้ TLS หน้านี้จะอธิบายวิธีเปิดใช้การเข้ารหัสภายในโหนด Cassandra โดยใช้ TLS บน Edge สำหรับ Private Cloud คุณต้องทำความคุ้นเคยกับรายละเอียดแหวน Cassandra จึงจะดำเนินการตามขั้นตอนเหล่านี้ได้
เปิดใช้การเข้ารหัสภายในโหนด Cassandra
ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้การเข้ารหัสภายในโหนด 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
ดำเนินการหมุนเวียนใบรับรอง
หากต้องการหมุนเวียนใบรับรอง ให้ทำตามขั้นตอนต่อไปนี้
- เพิ่มใบรับรองสำหรับคู่คีย์ที่ไม่ซ้ำกันแต่ละคู่ที่สร้างขึ้น (ดูภาคผนวก) ไปยัง 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_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