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

บทนำ

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

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

ฟีเจอร์ mTLS ดั้งเดิม

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

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

การเชื่อมโยงใบรับรอง

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

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

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

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

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

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

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

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

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

  • ข้อเสนอ mTLS เนทีฟระหว่างคอมโพเนนต์ไคลเอ็นต์กับ Cassandra นี้ใช้ร่วมกับ apigee-mtls ไม่ได้ หากใช้ฟีเจอร์นี้ คุณจะใช้ 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 ขององค์กร หรือสร้างใบรับรองที่ลงนามด้วยตนเอง จัดเก็บชุดใบรับรองรูทและใบรับรองกลางใน 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

    วางไฟล์ Keystore และ 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
    

    นอกจากนี้ สำหรับระบบปฏิบัติการที่เปิดใช้ FIPS ให้เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงในไฟล์ /opt/apigee/customer/application/cassandra.properties

    conf_cassandra_client_encryption_protocol=TLSv1.2

    ตรวจสอบว่าผู้ใช้ 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
    

    วางไฟล์ Keystore และ 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. สร้างและแก้ไขไฟล์การกำหนดค่าตามแอปพลิเคชันที่คุณกำหนดค่า
    แอปพลิเคชัน ไฟล์การกำหนดค่า
    เซิร์ฟเวอร์การจัดการ /opt/apigee/customer/application/management-server.properties
    โปรเซสเซอร์การจัดการ /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 แล้ว เครื่องมือค้นหา Cassandra มาตรฐาน cqlsh จะเชื่อมต่อกับ 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. สร้างและแก้ไขไฟล์การกำหนดค่าตามแอปพลิเคชันที่คุณกำหนดค่า
      แอปพลิเคชัน ไฟล์การกำหนดค่า
      เซิร์ฟเวอร์การจัดการ /opt/apigee/customer/application/management-server.properties
      โปรเซสเซอร์การจัดการ /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 ทีละโหนด

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

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

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

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

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

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

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

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

ภาคผนวก 1

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