เปิดใช้การเข้ารหัสภายในของ Cassandra

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

เปิดใช้การเข้ารหัสภายในโหนด Cassandra

หากต้องการเปิดใช้การเข้ารหัสภายในโหนด Cassandra ให้ทำตามขั้นตอนด้านล่างกับโหนดทั้งหมดในคลัสเตอร์ คุณต้องแจกจ่ายใบรับรองสาธารณะของแต่ละโหนดไปยังโหนดทั้งหมด หลังจากนั้น แต่ละโหนดจะมีใบรับรอง node0.cer, node1.cer ฯลฯ ใน Truststore แต่ละโหนดจะมีเฉพาะคีย์ส่วนตัวของตัวเองในคีย์สโตร์ ตัวอย่างเช่น node0 จะมีเฉพาะ node0.pem ในคีย์สโตร์ คุณต้องเปิดใช้การเข้ารหัสในแต่ละโหนดทีละรายการ

ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้การเข้ารหัสภายในโหนด Cassandra

  1. สร้างใบรับรองเซิร์ฟเวอร์โดยทำตามขั้นตอนในภาคผนวกเพื่อสร้างคีย์และใบรับรองแบบ Self-signed

    ขั้นตอนต่อไปนี้จะถือว่าคุณได้สร้าง keystore.node0 และ truststore.node0 รวมถึงรหัสผ่านคีย์สโตร์และ Truststore ตามที่อธิบายไว้ในภาคผนวก คุณควรสร้างคีย์สโตร์และ Truststore เป็นขั้นตอนเบื้องต้นบนแต่ละโหนดก่อนทำขั้นตอนถัดไป

  2. เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงในไฟล์ /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
  3. ตรวจสอบว่าไฟล์ cassandra.properties เป็นของผู้ใช้ apigee:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties

ดำเนินการขั้นตอนต่อไปนี้กับโหนด Cassandra แต่ละรายการทีละโหนด เพื่อให้การเปลี่ยนแปลงมีผลโดยไม่ทำให้เกิดช่วงพักสำหรับผู้ใช้

  1. หยุดบริการ Cassandra โดยทําดังนี้
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. รีสตาร์ทบริการ Cassandra โดยทําดังนี้
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. หากต้องการทราบว่าบริการการเข้ารหัส TLS ได้เริ่มต้นแล้วหรือไม่ ให้ตรวจสอบบันทึกของระบบสำหรับข้อความต่อไปนี้
    Starting Encrypted Messaging Service on TLS port

ดำเนินการหมุนเวียนใบรับรอง

หากต้องการหมุนเวียนใบรับรอง ให้ทำตามขั้นตอนต่อไปนี้

  1. เพิ่มใบรับรองสำหรับคู่คีย์ที่ไม่ซ้ำกันแต่ละคู่ที่สร้างขึ้น (ดูภาคผนวก) ไปยัง Truststore ของโหนด Cassandra ที่มีอยู่ ดังนั้นทั้งใบรับรองเก่าและใบรับรองใหม่จะอยู่ใน Truststore เดียวกัน:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE

    โดย NEW_ALIAS เป็นสตริงที่ไม่ซ้ำกันเพื่อระบุรายการ CERT คือชื่อไฟล์ใบรับรองที่จะเพิ่ม และ EXISTING_TRUSTSTORE คือชื่อของ Truststore ที่มีอยู่ในโหนด Cassandra

  2. ใช้ยูทิลิตีการคัดลอก เช่น scp เพื่อกระจาย Truststore ไปยังโหนด Cassandra ทั้งหมดในคลัสเตอร์แทนที่ Truststore ที่มีอยู่ซึ่งแต่ละโหนดใช้อยู่
  3. ดำเนินการรีสตาร์ทคลัสเตอร์เพื่อโหลด Truststore ใหม่และสร้างความน่าเชื่อถือสำหรับคีย์ใหม่ก่อนที่จะพร้อมใช้งาน:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. ในแต่ละโหนด 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 and NEW_KEYSTORE_PASSWORD is the keystore password set when the certificates were created, as explained in the Appendix.

  5. Stop the Cassandra service:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  6. รีสตาร์ทบริการ Cassandra โดยทําดังนี้
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. เมื่อสร้างการสื่อสารระหว่างโหนดทั้งหมดเรียบร้อยแล้ว ให้ไปยังโหนด Cassandra ถัดไป หมายเหตุ: ดำเนินการต่อไปยังโหนดถัดไปต่อเมื่อสร้างการสื่อสารระหว่างโหนดทั้งหมดเรียบร้อยแล้ว

ภาคผนวก

ตัวอย่างต่อไปนี้อธิบายวิธีเตรียมใบรับรองเซิร์ฟเวอร์ที่จำเป็นในการทำตามขั้นตอนการเข้ารหัสภายในโหนด คำสั่งที่แสดงในตัวอย่างใช้พารามิเตอร์ต่อไปนี้

พารามิเตอร์ คำอธิบาย
node0 สตริงที่ไม่ซ้ำกันเพื่อระบุโหนด
keystore.node0 ชื่อคีย์สโตร์ คำสั่งจะถือว่าไฟล์นี้อยู่ในไดเรกทอรีปัจจุบัน
keypass คีย์พาสต้องเหมือนกันสำหรับทั้งคีย์สโตร์และคีย์
dname ระบุที่อยู่ IP ของ node0 เป็น 10.128.0.39
-validity ค่าที่ตั้งไว้ในแฟล็กนี้ทำให้คู่คีย์ที่สร้างมีอายุการใช้งาน 10 ปี
  1. ไปที่ไดเรกทอรีต่อไปนี้
    cd /opt/apigee/data/apigee-cassandra
  2. เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างไฟล์ชื่อ 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"

    สำคัญ: ตรวจสอบว่ารหัสผ่านของคีย์เหมือนกับรหัสผ่านของคีย์สโตร์

  3. ส่งออกใบรับรองไปยังไฟล์แยกต่างหาก:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. ตรวจสอบว่าเฉพาะผู้ใช้ Apigee เท่านั้นและไม่มีใครอ่านไฟล์ได้:
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. นำเข้าใบรับรอง node0.cer ที่สร้างขึ้นไปยัง Truststore ของโหนด:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    คำสั่งด้านบนจะขอให้คุณตั้งรหัสผ่าน นี่คือรหัสผ่านของ Truststore และอาจแตกต่างจากรหัสผ่านคีย์สโตร์ที่คุณตั้งไว้ก่อนหน้านี้ หากได้รับข้อความแจ้งให้เชื่อถือใบรับรอง ให้ป้อน yes

  6. ใช้ 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
  7. สำหรับการเข้ารหัสโหนดต่อโหนด ให้คัดลอกไฟล์ node0.cer ไปยังแต่ละโหนด แล้วนำเข้าไปยัง Truststore ของแต่ละโหนด
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. ใช้ keytool -list เพื่อตรวจสอบใบรับรองในไฟล์คีย์สโตร์และไฟล์ Truststore:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0