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