บทนำ
คอมโพเนนต์ต่างๆ ของ 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 ที่ไม่ซ้ำกันซึ่งสร้างขึ้นได้ นอกจากนี้ยังมีวิธีอื่นๆ ที่ใช้ได้ แต่เราขอแนะนำวิธีด้านล่างนี้เนื่องจากน่าจะให้ความสมดุลที่ดีระหว่างความปลอดภัยและค่าใช้จ่ายในการบำรุงรักษา
จัดหาใบรับรองรูทและคู่คีย์/ใบรับรองระดับกลางที่ลงนามโดยรูท คุณอาจมีคีย์และใบรับรองดังกล่าวอยู่แล้ว หากไม่มี คุณสามารถสร้างใบรับรองและคีย์หลักและใบรับรองและคีย์ระดับกลางแบบ Self-signed ได้โดยใช้ขั้นตอนในภาคผนวก 1
- ใช้คีย์/ใบรับรองระดับกลางทั่วไปจากด้านบนเพื่อลงนามในคีย์และใบรับรองทั้งหมดที่เฉพาะเจาะจงกับแอปพลิเคชัน (ใบ)
การมีคีย์/ใบรับรองระดับกลางทั่วไปในคลัสเตอร์ 1 คลัสเตอร์จะทำให้มีการกำหนดค่า Truststore ทั่วไป (ที่มีเชนใบรับรองรูทและใบรับรองระดับกลางเดียวกัน) ในทุกโหนด Cassandra และไคลเอ็นต์ โหนด Cassandra และแอปพลิเคชันไคลเอ็นต์ทุกรายการจะได้รับคีย์และใบรับรองแบบลีฟที่ไม่ซ้ำกันซึ่งลงนามโดยคีย์/ใบรับรองระดับกลางทั่วไป
- การหมุนเวียนใบรับรองลีฟของโหนด Cassandra หรือแอปพลิเคชันไคลเอ็นต์เป็นเรื่องง่าย
- การหมุนเวียนใบรับรองระดับกลางหรือใบรับรองรูทยังคงเป็นการดำเนินการที่ค่อนข้างซับซ้อน แต่ความถี่ของการหมุนเวียนดังกล่าวจะต่ำกว่าความถี่ของใบรับรอง 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 ขั้นตอนตามที่อธิบายไว้ด้านล่าง
- จัดหาใบรับรองรูทและคู่คีย์/ใบรับรองระดับกลาง
- สร้างคู่คีย์/ใบรับรองของโหนด Cassandra 1 รายการ ลงนาม จัดเก็บไว้ในที่เก็บคีย์ และกำหนดค่า Cassandra สำหรับ mTLS ที่ไม่บังคับ ทำขั้นตอนซ้ำสำหรับแต่ละโหนด Cassandra ทีละรายการ
- สร้างคู่คีย์/ใบรับรองของแอปพลิเคชันไคลเอ็นต์ 1 รายการ ลงชื่อ จัดเก็บไว้ในคีย์สโตร์ และกำหนดค่าแอปพลิเคชันไคลเอ็นต์สำหรับ mTLS ทำขั้นตอนซ้ำในแอปพลิเคชันไคลเอ็นต์แต่ละรายการทีละรายการ แอปพลิเคชันไคลเอ็นต์
- edge-management-server
- edge-message-processor
- Edge Router
ขั้นตอนเหล่านี้มีรายละเอียดดังนี้
จัดหาใบรับรองรูทและใบรับรองกลาง
จัดหาใบรับรองรูทและคู่คีย์/ใบรับรองระดับกลางที่ลงนามโดยรูท ใช้ใบรับรองรูทและใบรับรองระดับกลางที่ลงนามโดย CA ขององค์กร หรือสร้างใบรับรองที่ลงนามด้วยตนเอง จัดเก็บชุดใบรับรองรูทและใบรับรองกลางใน Truststore ดูคำสั่งที่เป็นประโยชน์ได้ที่ภาคผนวก 1 คำสั่งถัดไปจะถือว่าคุณมีสิทธิ์เข้าถึงไฟล์ต่อไปนี้
intermediate.key
- ไฟล์คีย์สำหรับใบรับรองระดับกลางสำหรับการลงนามในใบรับรอง Leafintermediate-cert.pem
- ใบรับรองกลาง
กำหนดค่าโหนด Cassandra
- เลือกโหนด Cassandra 1 โหนด
- สร้างคู่คีย์และใบรับรองแบบลีฟ แล้วลงนามด้วยใบรับรองระดับกลาง จัดเก็บคีย์และใบรับรองที่ลงนามแล้วไว้ในคีย์สโตร์ ตัวอย่างด้านล่าง
# 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
- สร้างหรือแก้ไขไฟล์
/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
- กำหนดค่าและรีสตาร์ทโหนด Cassandra
apigee-service apigee-cassandra configure apigee-service apigee-cassandra restart
- ทำซ้ำขั้นตอนข้างต้นในแต่ละโหนด Cassandra ทีละโหนด
กำหนดค่าแอปพลิเคชันไคลเอ็นต์
ส่วนนี้ใช้กับคอมโพเนนต์ไคลเอ็นต์ต่อไปนี้ที่เชื่อมต่อกับ Cassandra
- edge-management-server
- edge-message-processor
- Edge Router
- เลือกคอมโพเนนต์ไคลเอ็นต์ 1 รายการ
- สร้างคู่คีย์และใบรับรองแบบลีฟ แล้วลงนามด้วยใบรับรองระดับกลาง จัดเก็บคีย์และใบรับรองที่ลงนามแล้วไว้ในคีย์สโตร์ ตัวอย่างด้านล่าง
# 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
- สร้างและแก้ไขไฟล์การกำหนดค่าตามแอปพลิเคชันที่คุณกำหนดค่า
แอปพลิเคชัน ไฟล์การกำหนดค่า เซิร์ฟเวอร์การจัดการ /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
- รีสตาร์ทแอปพลิเคชันไคลเอ็นต์
# 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
- คุณสามารถตรวจสอบว่าได้กำหนดค่า SSL ในแอปพลิเคชันไคลเอ็นต์อย่างถูกต้องโดยดูบันทึกตามบรรทัดด้านล่างในบันทึกของระบบของแอปพลิเคชันที่เหมาะสม
เพิ่มตัวเลือก SSL ลงในการเชื่อมต่อ Cassandra
- ทำขั้นตอนข้างต้นซ้ำในแอปพลิเคชันไคลเอ็นต์แต่ละรายการทีละรายการ
การดำเนินการและการกำหนดค่า
บังคับใช้ mTLS
เมื่อไม่ได้บังคับใช้ mTLS ใน Cassandra, Cassandra จะยอมรับการเชื่อมต่อข้อความธรรมดาจากไคลเอ็นต์หรือไคลเอ็นต์ที่สามารถทำการแฮนด์เชค TLS แบบ 2 ทางได้สำเร็จ หากต้องการให้การบังคับใช้ mTLS ทำงานได้ ควรกำหนดค่า mTLS ใน Cassandra ก่อน คุณตั้งค่าการบังคับใช้ mTLS ใน Cassandra ได้โดยทำตามขั้นตอนต่อไปนี้
- เลือกโหนด Cassandra 1 โหนด
- สร้างหรือแก้ไขไฟล์
/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
- กำหนดค่าและรีสตาร์ทโหนด Cassandra
apigee-service apigee-cassandra configure apigee-service apigee-cassandra restart
- ทำซ้ำขั้นตอนข้างต้นในแต่ละโหนด Cassandra ทีละโหนด
เมื่อบังคับใช้ mTLS ใน Cassandra แล้ว เครื่องมือค้นหา Cassandra มาตรฐาน cqlsh จะเชื่อมต่อกับ Cassandra โดยตรงไม่ได้ หากต้องการกำหนดค่า cqlsh สำหรับ SSL ให้สร้างคีย์และใบรับรองใหม่ (คล้ายกับคีย์และใบรับรองสำหรับแอปพลิเคชันไคลเอ็นต์) แล้วทำดังนี้
- สร้างหรือแก้ไขไฟล์
$HOME/.cassandra/cqlshrc
- เพิ่มเนื้อหาต่อไปนี้ในไฟล์
[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 จะใช้ ซึ่งควรเป็นคีย์/ใบรับรองระดับล่างที่คุณสร้างและลงนามด้วยใบรับรองระดับกลางได้
- เรียกใช้คำสั่ง
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 ให้ทำตามขั้นตอนด้านล่าง
- เลือกโหนด Cassandra 1 โหนด
- สร้างหรือแก้ไขไฟล์
/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
- กำหนดค่าและรีสตาร์ทโหนด Cassandra
apigee-service apigee-cassandra configure apigee-service apigee-cassandra restart
- ทำซ้ำขั้นตอนข้างต้นในแต่ละโหนด Cassandra ทีละโหนด
ปิดใช้ mTLS ดั้งเดิม
การปิดใช้ mTLS ดั้งเดิมเป็นกระบวนการแบบหลายขั้นตอน ซึ่งคล้ายกับการเปิดใช้ mTLS ดั้งเดิม ขั้นตอนระดับสูงมีดังนี้
- ปิดใช้การบังคับใช้ mTLS ใน Cassandra (หากมีการบังคับใช้)
- ปิดใช้ mTLS ในโหนดทั้งหมดของแอปพลิเคชันไคลเอ็นต์ต่อไปนี้ทีละรายการ
- edge-management-server
- edge-message-processor
- Edge Router
- สร้างและแก้ไขไฟล์การกำหนดค่าตามแอปพลิเคชันที่คุณกำหนดค่า
แอปพลิเคชัน ไฟล์การกำหนดค่า เซิร์ฟเวอร์การจัดการ /opt/apigee/customer/application/management-server.properties
โปรเซสเซอร์การจัดการ /opt/apigee/customer/application/message-processor.properties
เราเตอร์ /opt/apigee/customer/application/router.properties
- เพิ่มหรือแก้ไขพร็อพเพอร์ตี้ต่อไปนี้ในไฟล์การกำหนดค่า
### TLS on CQL connections conf_cassandra_sslconfig.enable.tls=false conf_cassandra_sslconfig.enable.mtls=false
- ตรวจสอบว่าผู้ใช้ Apigee เป็นเจ้าของและอ่านไฟล์การกำหนดค่าได้
chown apigee:apigee configuration file ### Example: chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- รีสตาร์ทแอปพลิเคชันไคลเอ็นต์
# 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
- ทำขั้นตอนที่ #a ถึง #d ซ้ำในแอปพลิเคชันไคลเอ็นต์แต่ละรายการทีละรายการ
- ปิดใช้ mTLS ในโหนด Cassandra ทั้งหมดทีละโหนดโดยทำดังนี้
- เลือกโหนด Cassandra 1 โหนด
- สร้างหรือแก้ไขไฟล์
/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
- กำหนดค่าและรีสตาร์ทโหนด Cassandra
- ทำขั้นตอน #a ถึง #c ซ้ำในแต่ละโหนด Cassandra ทีละโหนด
apigee-service apigee-cassandra configure apigee-service apigee-cassandra restart
การหมุนเวียนใบรับรอง
การหมุนเวียนสำหรับใบรับรอง Leaf เท่านั้น (ใช้ใบรับรองระดับกลางและใบรับรองรูทเดิม)คุณทำตามขั้นตอนที่คล้ายกับกำหนดค่าแอปพลิเคชันไคลเอ็นต์ได้ดังนี้
- สร้างคีย์/ใบรับรองปลายทางใหม่สำหรับแอปพลิเคชันโดยใช้คีย์/ใบรับรองระดับกลางเดียวกัน
- กำหนดค่าเส้นทางไปยังคีย์/ใบรับรองใหม่ในแอปพลิเคชันพร้อมกับรหัสผ่านและประเภทคีย์สโตร์
- รีสตาร์ทแอปพลิเคชัน
หากคุณวางแผนที่จะหมุนเวียนใบรับรองระดับกลางหรือใบรับรองรูท ขอแนะนำให้ดำเนินการนี้เป็นกระบวนการแบบหลายขั้นตอน ดังนี้
- ปิดใช้ mTLS ดั้งเดิมของ Cassandra ในคลัสเตอร์
- ใช้ใบรับรองรูทและใบรับรองระดับกลางใหม่เพื่อสร้างใบรับรองใหม่สำหรับสาขาหรือแอปพลิเคชัน
- ทำตามขั้นตอนเพื่อเปิดใช้ 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: การตั้งค่าการเชื่อมโยงใบรับรองทางเลือก
แม้ว่าบทความนี้จะแนะนำการตั้งค่าการเชื่อมโยงใบรับรองที่เฉพาะเจาะจงซึ่งให้ความสมดุลระหว่างความปลอดภัยและความสะดวกในการดำเนินการ แต่ก็มีการตั้งค่าอื่นๆ ที่อธิบายไว้ด้านล่าง หลักการทั่วไปส่วนใหญ่ใช้กับวิธีการอื่นๆ ได้เช่นกัน เช่น
- มีคีย์และใบรับรองแบบลีฟโดยตรงสำหรับโหนด Cassandra หรือแอปพลิเคชันไคลเอ็นต์ทุกรายการ (ไม่มีใบรับรองรูทหรือใบรับรองระดับกลางที่ลงนาม) ซึ่งอาจทำให้การหมุนเวียนใบรับรองมีความซับซ้อน
- มีชุดรูทและชุดระดับกลางหลายชุดสำหรับกรณีการใช้งานที่แตกต่างกัน ตัวอย่างเช่น โหนด Cassandra มีชุดใบรับรองรูท/ระดับกลาง 1 ชุดซึ่งใช้ในการลงนามใบรับรองลีฟทั้งหมดของ Cassandra ในทำนองเดียวกัน แอปพลิเคชันไคลเอ็นต์ทั้งหมดอาจมีชุดรูท/ชุดกลางแยกต่างหาก 1 ชุดสำหรับการลงนามในใบรับรองลีฟของแอปพลิเคชัน การตั้งค่าดังกล่าวเป็นไปได้ แต่ต้องเพิ่มเชนใบรับรองรูท/ใบรับรองระดับกลางลงใน Truststore ที่เหมาะสม ในตัวอย่างนี้ Truststore ของ Cassandra ควรมีใบรับรองรูท/ใบรับรองกลางของไคลเอ็นต์ และแอปพลิเคชันไคลเอ็นต์ควรมีเชนรูท/เชนกลางของโหนด Cassandra ใน Truststore
- เช่นเดียวกับด้านบน คุณสามารถมีชุดใบรับรองหลักและใบรับรองระหว่างกลางหลายชุดสำหรับภูมิภาคต่างๆ แต่ไคลเอ็นต์ทั้งหมดในทุกภูมิภาคและเซิร์ฟเวอร์ทั้งหมดในทุกภูมิภาคต้องทราบถึงเชนใบรับรองหลักและใบรับรองระหว่างกลางทั้งหมดโดยการเพิ่มเชนทั้งหมดลงใน Truststore ที่กำหนดค่าไว้