กำหนดค่า mTLS ดั้งเดิมของ Cassandra

บทนำ

คอมโพเนนต์ต่างๆ ของ Edge for Private Cloud เช่น Message Processor, Management Server และเราเตอร์จะเชื่อมต่อกับโหนด Cassandra ผ่านแชแนลข้อความธรรมดาโดยค่าเริ่มต้น ในแชแนลดังกล่าว ระบบจะสื่อสารข้อมูลที่ส่งไปยังและจาก Cassandra ในรูปแบบข้อความธรรมดา Apigee mTLS เป็นฟีเจอร์ที่อิงตาม Consul Service Mesh ซึ่งเพิ่มความปลอดภัยให้กับการสื่อสารระหว่างคอมโพเนนต์ในคลัสเตอร์ Edge for Private Cloud นอกจากนี้ ข้อเสนอนี้จาก Apigee ยังเพิ่มความปลอดภัย TLS ให้กับแชแนลการสื่อสารระหว่างคอมโพเนนต์ไคลเอ็นต์กับ Cassandra ด้วย

บทความนี้ครอบคลุมข้อเสนอทางเลือกใหม่จาก Apigee ซึ่งการสื่อสารระหว่างคอมโพเนนต์ไคลเอ็นต์กับ Cassandra ใน Edge for Private Cloud ได้รับการรักษาความปลอดภัยผ่าน mTLS (หรือที่เรียกว่า TLS แบบ 2 ทาง) โดยใช้ฟีเจอร์ที่มีให้ใช้งานใน Cassandra โดยไม่ต้องใช้โครงข่ายบริการภายนอก

ฟีเจอร์ mTLS แบบเนทีฟ

การเปิดใช้ mTLS ระหว่าง Cassandra กับคอมโพเนนต์ไคลเอ็นต์ที่อธิบายไว้ในบทความนี้ขึ้นอยู่กับฟีเจอร์ TLS ที่ Apache Cassandra มีให้ใช้งาน เมื่อเปิดใช้แล้ว การเชื่อมต่อไคลเอ็นต์กับ Cassandra (ในพอร์ตการขนส่งแบบเนทีฟ CQL 9042) จะทำการแฮนด์เชค TLS แบบ 2 ทางกับไคลเอ็นต์ก่อนที่จะอนุญาตให้สร้างการเชื่อมต่อ Cassandra จะทำหน้าที่เป็นเซิร์ฟเวอร์ และไคลเอ็นต์ต่างๆ ที่เชื่อมต่อกับ Cassandra (เช่น edge-message-processor, เครื่องมือ cqlsh ฯลฯ) จะทำหน้าที่เป็นไคลเอ็นต์สำหรับการเชื่อมต่อ TLS แบบ 2 ทางนี้

สำหรับ TLS แบบ 2 ทาง (หรือ mTLS) ทั้ง Cassandra และไคลเอ็นต์ต้องได้รับการตั้งค่าด้วยคีย์สโตร์ของตัวเอง คีย์สโตร์ของโหนด Cassandra แต่ละโหนดควรมีคีย์และใบรับรองของตัวเอง คีย์สโตร์ของแอปพลิเคชันไคลเอ็นต์แต่ละรายการควรมีคีย์และใบรับรองของไคลเอ็นต์นั้นๆ ควรเพิ่ม Truststore ที่มีใบรับรองและเชนที่เกี่ยวข้องของคู่สัญญาในทั้ง Cassandra และไคลเอ็นต์ Truststore ของโหนด Cassandra แต่ละโหนดควรมีใบรับรองของไคลเอ็นต์ และ Truststore ของไคลเอ็นต์แต่ละรายการควรมีใบรับรองของโหนด Cassandra ทั้งหมด คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของการแฮนด์เชค TLS แบบ 2 ทางได้ที่บทความ TLS/SSL แบบ 2 ทางของ Apigee

การสร้างเชนใบรับรอง

โดยทั่วไปแล้ว ใน TLS แบบ 2 ทาง คุณสามารถสร้างใบรับรองเซิร์ฟเวอร์ ใบรับรองไคลเอ็นต์ เชนใบรับรอง คีย์สโตร์ และ Truststore ได้หลายวิธี ซึ่งใช้ได้กับ mTLS แบบเนทีฟของ Cassandra และไคลเอ็นต์ด้วย Apigee ขอแนะนำให้ใช้แนวทางทั่วไปต่อไปนี้ในการกำหนดค่าคีย์และใบรับรองสำหรับฟีเจอร์นี้ โดยพิจารณาจากวิธีที่องค์กรโดยทั่วไปใช้คลัสเตอร์ Edge for Private Cloud และจำนวนคู่การเชื่อมต่อไคลเอ็นต์กับ Cassandra ที่ไม่ซ้ำกันซึ่งสามารถสร้างได้ นอกจากนี้ยังมีวิธีอื่นๆ ที่ใช้ได้ แต่โดยทั่วไปแล้ววิธีด้านล่างนี้จะให้ความสมดุลที่ดีระหว่างความปลอดภัยและค่าใช้จ่ายในการบำรุงรักษา

  1. จัดหาใบรับรองรูทและคู่คีย์/ใบรับรองระดับกลางที่ลงนามโดยรูท คุณอาจมีคีย์และใบรับรองดังกล่าวอยู่แล้ว หากไม่มี คุณสามารถสร้างใบรับรองและคีย์รูทและใบรับรองกลางแบบ Self-signed ได้โดยทำตามขั้นตอนใน ภาคผนวก 1

  2. ใช้คีย์/ใบรับรองระดับกลางทั่วไปจากด้านบนเพื่อลงนามคีย์และใบรับรองเฉพาะแอปพลิเคชัน (ลีฟ)

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

  1. การหมุนเวียนใบรับรอง Leaf ของโหนด Cassandra หรือแอปพลิเคชันไคลเอ็นต์เป็นเรื่องง่าย
  2. การหมุนเวียนใบรับรองระดับกลางหรือใบรับรองรูท ยังคงเป็นการดำเนินการที่ค่อนข้างซับซ้อน แต่ความถี่ในการหมุนเวียนดังกล่าวจะต่ำกว่าใบรับรอง Leaf มาก

ใช้แนวทางปฏิบัติด้านความปลอดภัยขององค์กรเพื่อตัดสินใจว่าจะใช้ใบรับรองรูทและใบรับรองกลางทั่วไปในคลัสเตอร์ Private Cloud ต่างๆ หรือไม่ คุณสามารถดูการตั้งค่าใบรับรองทางเลือกได้ในภาคผนวก 2

ขั้นตอนที่เหลือในบทความนี้จะให้รายละเอียดเกี่ยวกับวิธีการออกแบบคีย์และใบรับรองตามที่กล่าวไว้ข้างต้น

ข้อจำกัดและคำเตือน

ฟีเจอร์นี้มีข้อจำกัดดังต่อไปนี้

  • ข้อเสนอ mTLS แบบเนทีฟระหว่างคอมโพเนนต์ไคลเอ็นต์กับ Cassandra นี้ไม่สามารถใช้ร่วมกับ apigee-mtls ได้ หากใช้ฟีเจอร์นี้ คุณจะใช้ apigee-mtls ไม่ได้ และในทางกลับกัน
  • การเปิดใช้ mTLS ระหว่างคอมโพเนนต์ไคลเอ็นต์กับ Cassandra จะส่งผลต่อประสิทธิภาพการทำงานของการเชื่อมต่อที่สร้างขึ้นระหว่างไคลเอ็นต์กับ Cassandra การดำเนินการต่างๆ เช่น การบูตไคลเอ็นต์หรือการปรับขนาดการเชื่อมต่อ Cassandra อาจช้าลงเนื่องจาก Cassandra และไคลเอ็นต์ต้องเจรจา TLS ก่อนที่จะเริ่มการสื่อสาร ผลกระทบที่เกิดขึ้นควรมีน้อยและโดยทั่วไปแล้วจะไม่สังเกตเห็น
  • ใน Cassandra คุณสามารถบังคับใช้ mTLS กับการเชื่อมต่อไคลเอ็นต์ขาเข้าได้โดยไม่บังคับ แม้ว่าจะเปิดใช้การบังคับใช้ได้ แต่คุณต้องปิดใช้ระหว่างงานการดำเนินงาน เช่น การอัปเกรดซอฟต์แวร์ Apigee, การเปิด/ปิดใช้ฟีเจอร์ TLS และการหมุนเวียนใบรับรองบางประเภท ดูรายละเอียดเพิ่มเติมได้ที่ส่วนการดำเนินการและการกำหนดค่า
  • ลูกค้ามีหน้าที่รับผิดชอบในการจัดการและบำรุงรักษาใบรับรอง
  • การหมุนเวียนใบรับรองมีรายละเอียดปลีกย่อยต่างๆ โปรดดูรายละเอียดเพิ่มเติมในส่วน การหมุนเวียนใบรับรอง

เปิดใช้ mTLS แบบเนทีฟ

โดยรวมแล้ว การเปิดใช้ mTLS แบบเนทีฟเป็นกระบวนการ 3 ขั้นตอนตามที่อธิบายไว้ด้านล่าง

  1. จัดหาใบรับรองรูทและคู่คีย์/ใบรับรองระดับกลาง
  2. สร้างคู่คีย์/ใบรับรองลีฟของโหนด Cassandra 1 โหนด ลงนาม เก็บไว้ในคีย์สโตร์ และกำหนดค่า Cassandra สำหรับ mTLS ที่ไม่บังคับ ทำซ้ำขั้นตอนสำหรับโหนด Cassandra แต่ละโหนดทีละโหนด
  3. สร้างคู่คีย์/ใบรับรองลีฟของแอปพลิเคชันไคลเอ็นต์ 1 รายการ ลงนาม เก็บไว้ในคีย์สโตร์ และกำหนดค่าแอปพลิเคชันไคลเอ็นต์สำหรับ mTLS ทำซ้ำขั้นตอนในแอปพลิเคชันไคลเอ็นต์แต่ละรายการทีละรายการ แอปพลิเคชันไคลเอ็นต์
    1. edge-management-server
    2. edge-message-processor
    3. edge-router

ขั้นตอนเหล่านี้มีรายละเอียดดังนี้

จัดหาใบรับรองรูทและระดับกลาง

จัดหาใบรับรองรูทและคู่คีย์/ใบรับรองระดับกลางที่ลงนามโดยรูท ใช้ใบรับรองรูทและใบรับรองกลางที่ลงนามโดย CA ขององค์กร หรือสร้างใบรับรองแบบ Self-signed เก็บเชนใบรับรองรูทและใบรับรองกลางไว้ใน Truststore ดูคำสั่งที่เป็นประโยชน์ได้ในภาคผนวก 1 คำสั่งต่อไปนี้จะถือว่าคุณมีสิทธิ์เข้าถึงไฟล์ต่อไปนี้

  • intermediate.key - ไฟล์คีย์สำหรับใบรับรองระดับกลางเพื่อใช้ลงนามใบรับรอง Leaf
  • intermediate-cert.pem- ใบรับรองกลาง

กำหนดค่าโหนด Cassandra

  1. เลือกโหนด Cassandra 1 โหนด
  2. สร้างคู่คีย์และใบรับรองลีฟ แล้วลงนามด้วยใบรับรองกลาง เก็บคีย์และใบรับรองที่ลงนามไว้ในคีย์สโตร์ ตัวอย่างด้านล่าง
    
    # Generate Leaf key and csr
    openssl req -newkey rsa:2048 -keyout cass-node1.key -out cass-node1-req.pem -sha256 -days 365 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=yourip/emailAddress=cassnode1@yourorg.com"
    
    # leaf cert signed by intermediate
    openssl x509 -req -in cass-node1-req.pem -CAkey intermediate.key -CA intermediate-cert.pem -days 365 -CAcreateserial -out cass-node1-cert.pem
    
    # keystore packaging leaf key and cert
    openssl pkcs12 -export -clcerts -in cass-node1-cert.pem -inkey cass-node1.key -out cass-node1-keystore.pfx -name nativemtls -password pass:keystorepass

    วางไฟล์คีย์สโตร์และ Truststore ไว้ในตำแหน่งที่เฉพาะเจาะจงในโหนด และตรวจสอบว่าผู้ใช้ apigee เข้าถึงไฟล์ดังกล่าวได้

    cp cass-node1-keystore.pfx /opt/apigee/customer/application/
    cp truststore.pfx /opt/apigee/customer/application/
    
    chown apigee:apigee /opt/apigee/customer/application/cass-node1-keystore.pfx
    chown apigee:apigee /opt/apigee/customer/application/truststore.pfx

  3. สร้างหรือแก้ไขไฟล์ /opt/apigee/customer/application/cassandra.properties เพิ่มเนื้อหาต่อไปนี้ในไฟล์นี้
    ### Enable Cassandra TLS on CQL connections
    conf_cassandra_client_encryption_enabled=true
    
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=true
    
    ### Keystore details
    conf_cassandra_client_encryption_keystore=/opt/apigee/customer/application/cass-node1-keystore.pfx
    conf_cassandra_client_encryption_keystore_password=keystorepass
    conf_cassandra_server_encryption_store_type=PKCS12
    
    ### Whether to enable 2-way TLS (or mTLS) - true or false
    conf_cassandra_client_encryption_require_client_auth=true
    
    ### When 2-way TLS is enabled, client certificate details need to be provided via a truststore
    conf_cassandra_client_encryption_truststore=/opt/apigee/customer/application/truststore.pfx
    conf_cassandra_client_encryption_truststore_password=trustpass
    conf_cassandra_client_encryption_store_type=PKCS12
    

    ตรวจสอบว่าผู้ใช้ apigee เป็นเจ้าของและอ่านไฟล์ได้

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
  4. กำหนดค่าและรีสตาร์ทโหนด Cassandra
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  5. ทำซ้ำขั้นตอนข้างต้นในโหนด Cassandra แต่ละโหนดทีละโหนด

กำหนดค่าแอปพลิเคชันไคลเอ็นต์

ส่วนนี้ใช้กับคอมโพเนนต์ไคลเอ็นต์ต่อไปนี้ที่เชื่อมต่อกับ Cassandra

  • edge-management-server
  • edge-message-processor
  • edge-router

  1. เลือกคอมโพเนนต์ไคลเอ็นต์ 1 รายการ
  2. สร้างคู่คีย์และใบรับรองลีฟ แล้วลงนามด้วยใบรับรองกลาง เก็บคีย์และใบรับรองที่ลงนามไว้ในคีย์สโตร์ ตัวอย่างด้านล่าง
    
    # Generate Leaf key and csr
    openssl req -newkey rsa:2048 -keyout mgmt-node1.key -out mgmt-node1-req.pem -sha256 -days 365 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=yourip/emailAddress=mgmtnode1@yourorg.com"
    
    # leaf cert signed by intermediate
    openssl x509 -req -in mgmt-node1-req.pem -CAkey intermediate.key -CA intermediate-cert.pem -days 365 -CAcreateserial -out mgmt-node1-cert.pem
    
    # keystore packaging leaf key and cert
    openssl pkcs12 -export -clcerts -in mgmt-node1-cert.pem -inkey mgmt-node1.key -out mgmt-node1-keystore.pfx -name nativemtls -password pass:keystorepass
    

    วางไฟล์คีย์สโตร์และ Truststore ไว้ในตำแหน่งที่เฉพาะเจาะจงในโหนด และตรวจสอบว่าผู้ใช้ apigee เข้าถึงไฟล์ดังกล่าวได้

    cp mgmt-node1-keystore.pfx /opt/apigee/customer/application/
    cp truststore.pfx /opt/apigee/customer/application/
    
    chown apigee:apigee /opt/apigee/customer/application/mgmt-node1-keystore.pfx
    chown apigee:apigee /opt/apigee/customer/application/truststore.pfx

  3. สร้างและแก้ไขไฟล์การกำหนดค่าตามแอปพลิเคชันที่คุณกำหนดค่า
    แอปพลิเคชัน ไฟล์การกำหนดค่า
    Management Server /opt/apigee/customer/application/management-server.properties
    Message Processor /opt/apigee/customer/application/message-processor.properties
    เราเตอร์ /opt/apigee/customer/application/router.properties

    เพิ่มการกำหนดค่าต่อไปนี้ในไฟล์

    ### Enable TLS on CQL connections
    conf_cassandra_sslconfig.enable.tls=true
    conf_cassandra_sslconfig.enable.mtls=true
    
    ### Keystore Details
    conf_cassandra_sslconfig.keystore.path=/opt/apigee/customer/application/mgmt-node1-keystore.pfx
    conf_cassandra_sslconfig.keystore.password=keystorepass
    conf_cassandra_sslconfig.keystore.type=PKCS12
    
    ### Truststore Details
    conf_cassandra_sslconfig.truststore.path=/opt/apigee/customer/application/truststore.pfx
    conf_cassandra_sslconfig.truststore.password=trustpass
    conf_cassandra_sslconfig.truststore.type=PKCS12
    

    ตรวจสอบว่าผู้ใช้ apigee เป็นเจ้าของและอ่านไฟล์การกำหนดค่าได้

    chown apigee:apigee configuration file
    
    ### Example:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    

  4. รีสตาร์ทแอปพลิเคชันไคลเอ็นต์
    # Configure and restart service:
    apigee-service component configure
    apigee-service component restart
    # Example, to configure and restart message processor application
    apigee-service edge-message-processor configure
    apigee-service edge-message-processor restart
    
  5. คุณสามารถตรวจสอบว่าได้กำหนดค่า SSL อย่างถูกต้องในแอปพลิเคชันไคลเอ็นต์โดยดูบันทึกตามบรรทัดด้านล่างในบันทึกของระบบของแอปพลิเคชันที่เหมาะสม

    เพิ่มตัวเลือก SSL ลงในการเชื่อมต่อ Cassandra แล้ว

  6. ทำซ้ำขั้นตอนข้างต้นในแอปพลิเคชันไคลเอ็นต์แต่ละรายการทีละรายการ

การดำเนินการและการกำหนดค่า

บังคับใช้ mTLS

เมื่อไม่ได้บังคับใช้ mTLS ใน Cassandra, Cassandra จะยอมรับการเชื่อมต่อข้อความธรรมดาจากไคลเอ็นต์หรือไคลเอ็นต์ที่สามารถทำการแฮนด์เชค TLS แบบ 2 ทางได้สำเร็จ การบังคับใช้ mTLS จะทำงานได้ก็ต่อเมื่อได้กำหนดค่า mTLS ใน Cassandra ก่อน คุณสามารถตั้งค่าการบังคับใช้ mTLS ใน Cassandra ได้โดยทำตามขั้นตอนด้านล่าง

  1. เลือกโหนด Cassandra 1 โหนด
  2. สร้างหรือแก้ไขไฟล์ /opt/apigee/customer/application/cassandra.properties เพิ่มหรือแก้ไขพร็อพเพอร์ตี้ต่อไปนี้ในไฟล์นี้
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=false
    

    ตรวจสอบว่าผู้ใช้ apigee เป็นเจ้าของและอ่านไฟล์ได้

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
    
  3. กำหนดค่าและรีสตาร์ทโหนด Cassandra
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  4. ทำซ้ำขั้นตอนข้างต้นในโหนด Cassandra แต่ละโหนดทีละโหนด

เมื่อบังคับใช้ mTLS ใน Cassandra แล้ว เครื่องมือ Query cqlsh มาตรฐานของ Cassandra จะเชื่อมต่อกับ Cassandra โดยตรงไม่ได้ หากต้องการกำหนดค่า cqlsh สำหรับ SSL ให้สร้างคีย์และใบรับรองลีฟใหม่ (คล้ายกับคีย์และใบรับรองลีฟสำหรับ แอปพลิเคชันไคลเอ็นต์) แล้วทำดังนี้

  1. สร้างหรือแก้ไขไฟล์ $HOME/.cassandra/cqlshrc
  2. เพิ่มเนื้อหาต่อไปนี้ในไฟล์
    [ssl]
    certfile = /home/admin-user/certs/inter-root.pem
    validate = false
    userkey = /home/admin-user/certs/cqlsh1.key
    usercert = /home/admin-user/certs/cqlsh1-cert.pem
    
    • certfile - ไฟล์ใบรับรองที่มีเชนใบรับรองรูทและใบรับรองกลาง
    • userkey - คีย์ไคลเอ็นต์ที่ cqlsh จะใช้ ซึ่งควรเป็นคู่คีย์/ใบรับรองลีฟที่คุณสร้างและลงนามด้วยใบรับรองกลางได้
    • usercert - ใบรับรองไคลเอ็นต์ที่ cqlsh จะใช้ ซึ่งควรเป็นคู่คีย์/ใบรับรองลีฟที่คุณสร้างและลงนามด้วยใบรับรองกลางได้
  3. เรียกใช้คำสั่ง cqlsh ตามปกติขณะระบุอาร์กิวเมนต์ --ssl ตัวอย่างเช่น
    $  /opt/apigee/apigee-cassandra/bin/cqlsh --ssl X.X.X.X
    Connected to Apigee at X.X.X.X:9042
    [cqlsh 6.0.0 | Cassandra 4.0.13 | CQL spec 3.4.5 | Native protocol v5]
    Use HELP for help.
    cqlsh>
    

ปิดใช้การบังคับใช้ mTLS ใน Cassandra

หากต้องการปิดใช้การบังคับใช้ mTLS ใน Cassandra ให้ทำตามขั้นตอนด้านล่าง

  1. เลือกโหนด Cassandra 1 โหนด
  2. สร้างหรือแก้ไขไฟล์ /opt/apigee/customer/application/cassandra.properties เพิ่มหรือแก้ไขพร็อพเพอร์ตี้ต่อไปนี้ในไฟล์นี้
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=true
    

    ตรวจสอบว่าผู้ใช้ apigee เป็นเจ้าของและอ่านไฟล์ได้

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
    
  3. กำหนดค่าและรีสตาร์ทโหนด Cassandra
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  4. ทำซ้ำขั้นตอนข้างต้นในโหนด Cassandra แต่ละโหนดทีละโหนด

ปิดใช้ mTLS แบบเนทีฟ

การปิดใช้ mTLS แบบเนทีฟเป็นกระบวนการหลายขั้นตอน ซึ่งคล้ายกับการเปิดใช้ mTLS แบบเนทีฟ ขั้นตอนโดยรวมมีดังนี้

  1. ปิดใช้การบังคับใช้ mTLS ใน Cassandra (หากบังคับใช้)
  2. ปิดใช้ mTLS ในโหนดทั้งหมดของแอปพลิเคชันไคลเอ็นต์ต่อไปนี้ทีละโหนด
    • edge-management-server
    • edge-message-processor
    • edge-router
    1. สร้างและแก้ไขไฟล์การกำหนดค่าตามแอปพลิเคชันที่คุณกำหนดค่า
      แอปพลิเคชัน ไฟล์การกำหนดค่า
      Management Server /opt/apigee/customer/application/management-server.properties
      Message Processor /opt/apigee/customer/application/message-processor.properties
      เราเตอร์ /opt/apigee/customer/application/router.properties
    2. เพิ่มหรือแก้ไขพร็อพเพอร์ตี้ต่อไปนี้ในไฟล์การกำหนดค่า
      ### TLS on CQL connections
      conf_cassandra_sslconfig.enable.tls=false
      conf_cassandra_sslconfig.enable.mtls=false
      
    3. ตรวจสอบว่าผู้ใช้ apigee เป็นเจ้าของและอ่านไฟล์การกำหนดค่าได้
      chown apigee:apigee configuration file
      
      ### Example:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. รีสตาร์ทแอปพลิเคชันไคลเอ็นต์
      
      # Configure and restart service:
      apigee-service component configure
      apigee-service component restart
      
      # Example, to configure and restart message processor application
      apigee-service edge-message-processor configure
      apigee-service edge-message-processor restart
      
    5. ทำซ้ำขั้นตอน #a ถึง #d ในแอปพลิเคชันไคลเอ็นต์แต่ละรายการทีละรายการ
  3. ปิดใช้ mTLS ในโหนด Cassandra ทั้งหมดทีละโหนด
    1. เลือกโหนด Cassandra 1 โหนด
    2. สร้างหรือแก้ไขไฟล์ /opt/apigee/customer/application/cassandra.properties เพิ่มหรือแก้ไขพร็อพเพอร์ตี้ต่อไปนี้ในไฟล์นี้
      ### Cassandra TLS on CQL connections
      conf_cassandra_client_encryption_enabled=false
      

      ตรวจสอบว่าผู้ใช้ apigee เป็นเจ้าของและอ่านไฟล์ได้

      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
      
    3. กำหนดค่าและรีสตาร์ทโหนด Cassandra
    4. apigee-service apigee-cassandra configure
      apigee-service apigee-cassandra restart
      
    5. ทำซ้ำขั้นตอน #a ถึง #c ในโหนด Cassandra แต่ละโหนดทีละโหนด

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

การหมุนเวียนสำหรับใบรับรองลีฟเท่านั้น (เก็บใบรับรองระดับกลางและรูทเดิมไว้)

คุณสามารถทำตามขั้นตอนที่คล้ายกับการกำหนดค่าแอปพลิเคชันไคลเอ็นต์ได้ดังนี้

  1. สร้างคีย์/ใบรับรองลีฟใหม่สำหรับแอปพลิเคชันโดยใช้คีย์/ใบรับรองระดับกลางเดียวกัน
  2. กำหนดค่าเส้นทางไปยังคีย์/ใบรับรองลีฟใหม่ในแอปพลิเคชัน พร้อมด้วยรหัสผ่านและประเภทคีย์สโตร์
  3. รีสตาร์ทแอปพลิเคชัน
การหมุนเวียนสำหรับใบรับรองรูทหรือใบรับรองกลาง

หากวางแผนที่จะหมุนเวียนใบรับรองระดับกลางหรือใบรับรองรูท ขอแนะนำให้ดำเนินการนี้เป็นกระบวนการหลายขั้นตอนดังนี้

  1. ปิดใช้ mTLS แบบเนทีฟของ Cassandra ในคลัสเตอร์
  2. ใช้ใบรับรองรูทและระดับกลางใหม่เพื่อสร้างใบรับรองลีฟหรือใบรับรองแอปพลิเคชันใหม่
  3. ทำตามขั้นตอนเพื่อเปิดใช้ mTLS แบบเนทีฟของ Cassandra โดยใช้ชุดคีย์และใบรับรองใหม่

การดำเนินการทั่วไปของ Apigee

หากต้องการดำเนินการทั่วไปของ Apigee เช่น การอัปเกรดซอฟต์แวร์ Apigee, การเพิ่มหรือนำโหนด Cassandra ออก, การเพิ่มหรือนำศูนย์ข้อมูลออก, การเปิดหรือปิดใช้การตรวจสอบสิทธิ์ Cassandra ฯลฯ ให้ตรวจสอบว่าไม่ได้บังคับใช้ mTLS ใน Cassandra หากบังคับใช้ mTLS ไว้ ให้ ปิดใช้การบังคับใช้ ก่อนดำเนินการต่อ

ภาคผนวก 1

คุณสามารถทำตามขั้นตอนในภาคผนวกนี้เพื่อสร้างคู่คีย์/ใบรับรองรูทและระดับกลางแบบ Self-signed และเพิ่มเชนใบรับรองนี้ลงใน Truststore

สร้างใบรับรองรูทและใบรับรองกลางแบบ Self-signed

# Create self-signed root key and cert
openssl req -x509 -newkey rsa:2048 -keyout root.key -out root-cert.pem -sha256 -days 3650 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=root.yourorg.com/emailAddress=apigeeroot@yourorg.com"

# Create intermediate key and cert (signed by root)
openssl req -newkey rsa:2048 -keyout intermediate.key -out intermediate-req.pem -sha256 -days 3650 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=inter.yourorg.com/emailAddress=apigeeinter@yourorg.com"

openssl x509 -req -in intermediate-req.pem -CAkey root.key -CA root-cert.pem -days 3650 -CAcreateserial -out intermediate-cert.pem

สร้าง Truststore

# Merge root and intermediate cert into 1 file
cat intermediate-cert.pem > inter-root.pem
cat root-cert.pem >> inter-root.pem

# Create truststore to be used everywhere
keytool -keystore truststore.pfx -storetype PKCS12 -importcert -file inter-root.pem -keypass trustpass -storepass trustpass -alias nativemtls -noprompt

ภาคผนวก 2: การตั้งค่าการสร้างเชนใบรับรองทางเลือก

แม้ว่าบทความนี้จะแนะนำการตั้งค่าการสร้างเชนใบรับรองที่เฉพาะเจาะจงซึ่งให้ความสมดุลระหว่างความปลอดภัยและความสะดวกในการดำเนินการ แต่ก็มีการตั้งค่าทางเลือกอื่นๆ ซึ่งอธิบายไว้ด้านล่าง หลักการทั่วไปส่วนใหญ่ใช้ได้กับวิธีการอื่นๆ ด้วย เช่น

  1. การมีคีย์และใบรับรองลีฟโดยตรงสำหรับโหนด Cassandra หรือแอปพลิเคชันไคลเอ็นต์ทุกรายการ (โดยไม่มีใบรับรองรูทหรือระดับกลางสำหรับลงนาม) ซึ่งอาจทำให้การหมุนเวียนใบรับรองซับซ้อน
  2. การมีชุดรูทและระดับกลางหลายชุดสำหรับกรณีการใช้งานต่างๆ เช่น โหนด Cassandra มีชุดใบรับรองรูท/ใบรับรองกลาง 1 ชุดซึ่งใช้ลงนามใบรับรอง Leaf ทั้งหมดของ Cassandra ในทำนองเดียวกัน แอปพลิเคชันไคลเอ็นต์ทั้งหมดอาจมีชุดรูท/ระดับกลางแยกกัน 1 ชุดสำหรับลงนามใบรับรอง Leaf ของแอปพลิเคชัน การตั้งค่าดังกล่าวใช้ได้ แต่ต้องเพิ่มเชนใบรับรองรูท/ใบรับรองกลางลงใน Truststore ที่เหมาะสม ในตัวอย่างนี้ Truststore ของ Cassandra ควรมีใบรับรองรูท/ใบรับรองกลางของไคลเอ็นต์ และแอปพลิเคชันไคลเอ็นต์ควรมีเชนรูท/ใบรับรองกลางของโหนด Cassandra ใน Truststore
  3. เช่นเดียวกับด้านบน คุณสามารถมีชุดใบรับรองรูทและใบรับรองกลางหลายชุดสำหรับภูมิภาคต่างๆ แต่ไคลเอ็นต์และเซิร์ฟเวอร์ทั้งหมดในทุกภูมิภาคต้องทราบเชนรูทและเชนใบรับรองกลางทั้งหมดโดยเพิ่มเชนเหล่านั้นทั้งหมดลงใน Truststore ที่กำหนดค่าไว้