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

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

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

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

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

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

    ขั้นตอนต่อไปนี้จะถือว่าคุณได้สร้าง keystore.node0 และ truststore.node0 รวมถึงรหัสผ่าน Keystore และ Truststore ตามที่อธิบายไว้ในภาคผนวกแล้ว ควรสร้าง Keystore และ 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 ชื่อ Keystore คำสั่งจะถือว่าไฟล์นี้อยู่ในไดเรกทอรีปัจจุบัน
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"

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

  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 และอาจแตกต่างจากรหัสผ่าน Keystore ที่คุณตั้งไว้ก่อนหน้านี้ หากได้รับข้อความแจ้งให้เชื่อถือใบรับรอง ให้ป้อน 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 เพื่อตรวจสอบใบรับรองในไฟล์ Keystore และ Truststore ดังนี้
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0