บทนำ
คอมโพเนนต์ต่างๆ ของ 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 ที่ไม่ซ้ำกันซึ่งสามารถสร้างได้ นอกจากนี้ยังมีวิธีอื่นๆ ที่ใช้ได้ แต่โดยทั่วไปแล้ววิธีด้านล่างนี้จะให้ความสมดุลที่ดีระหว่างความปลอดภัยและค่าใช้จ่ายในการบำรุงรักษา
จัดหาใบรับรองรูทและคู่คีย์/ใบรับรองระดับกลางที่ลงนามโดยรูท คุณอาจมีคีย์และใบรับรองดังกล่าวอยู่แล้ว หากไม่มี คุณสามารถสร้างใบรับรองและคีย์รูทและใบรับรองกลางแบบ Self-signed ได้โดยทำตามขั้นตอนใน ภาคผนวก 1
- ใช้คีย์/ใบรับรองระดับกลางทั่วไปจากด้านบนเพื่อลงนามคีย์และใบรับรองเฉพาะแอปพลิเคชัน (ลีฟ)
การมีคีย์/ใบรับรองระดับกลางทั่วไปใน 1 คลัสเตอร์จะทำให้มีการกำหนดค่า Truststore ทั่วไป (ที่มีเชนใบรับรองรูทและระดับกลางเดียวกัน) ในโหนด Cassandra และไคลเอ็นต์ทุกโหนด โหนด Cassandra และแอปพลิเคชันไคลเอ็นต์ทุกรายการจะได้รับคีย์และใบรับรองลีฟที่ไม่ซ้ำกันของตัวเอง ซึ่งลงนามโดยคีย์/ใบรับรองระดับกลางทั่วไป
- การหมุนเวียนใบรับรอง Leaf ของโหนด Cassandra หรือแอปพลิเคชันไคลเอ็นต์เป็นเรื่องง่าย
- การหมุนเวียนใบรับรองระดับกลางหรือใบรับรองรูท ยังคงเป็นการดำเนินการที่ค่อนข้างซับซ้อน แต่ความถี่ในการหมุนเวียนดังกล่าวจะต่ำกว่าใบรับรอง Leaf มาก
ใช้แนวทางปฏิบัติด้านความปลอดภัยขององค์กรเพื่อตัดสินใจว่าจะใช้ใบรับรองรูทและใบรับรองกลางทั่วไปในคลัสเตอร์ Private Cloud ต่างๆ หรือไม่ คุณสามารถดูการตั้งค่าใบรับรองทางเลือกได้ในภาคผนวก 2
ขั้นตอนที่เหลือในบทความนี้จะให้รายละเอียดเกี่ยวกับวิธีการออกแบบคีย์และใบรับรองตามที่กล่าวไว้ข้างต้น
ข้อจำกัดและคำเตือน
ฟีเจอร์นี้มีข้อจำกัดดังต่อไปนี้
- ข้อเสนอ mTLS แบบเนทีฟระหว่างคอมโพเนนต์ไคลเอ็นต์กับ Cassandra นี้ไม่สามารถใช้ร่วมกับ 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 ขององค์กร หรือสร้างใบรับรองแบบ Self-signed เก็บเชนใบรับรองรูทและใบรับรองกลางไว้ใน 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
วางไฟล์คีย์สโตร์และ 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
ตรวจสอบว่าผู้ใช้ 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
วางไฟล์คีย์สโตร์และ 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
- สร้างและแก้ไขไฟล์การกำหนดค่าตามแอปพลิเคชันที่คุณกำหนดค่า
แอปพลิเคชัน ไฟล์การกำหนดค่า Management Server /opt/apigee/customer/application/management-server.propertiesMessage 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
- รีสตาร์ทแอปพลิเคชันไคลเอ็นต์
# 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 แล้ว เครื่องมือ Query cqlsh มาตรฐานของ Cassandra จะเชื่อมต่อกับ 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
- สร้างและแก้ไขไฟล์การกำหนดค่าตามแอปพลิเคชันที่คุณกำหนดค่า
แอปพลิเคชัน ไฟล์การกำหนดค่า Management Server /opt/apigee/customer/application/management-server.propertiesMessage Processor /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
การหมุนเวียนใบรับรอง
การหมุนเวียนสำหรับใบรับรองลีฟเท่านั้น (เก็บใบรับรองระดับกลางและรูทเดิมไว้)คุณสามารถทำตามขั้นตอนที่คล้ายกับการกำหนดค่าแอปพลิเคชันไคลเอ็นต์ได้ดังนี้
- สร้างคีย์/ใบรับรองลีฟใหม่สำหรับแอปพลิเคชันโดยใช้คีย์/ใบรับรองระดับกลางเดียวกัน
- กำหนดค่าเส้นทางไปยังคีย์/ใบรับรองลีฟใหม่ในแอปพลิเคชัน พร้อมด้วยรหัสผ่านและประเภทคีย์สโตร์
- รีสตาร์ทแอปพลิเคชัน
หากวางแผนที่จะหมุนเวียนใบรับรองระดับกลางหรือใบรับรองรูท ขอแนะนำให้ดำเนินการนี้เป็นกระบวนการหลายขั้นตอนดังนี้
- ปิดใช้ mTLS แบบเนทีฟของ Cassandra ในคลัสเตอร์
- ใช้ใบรับรองรูทและระดับกลางใหม่เพื่อสร้างใบรับรองลีฟหรือใบรับรองแอปพลิเคชันใหม่
- ทำตามขั้นตอนเพื่อเปิดใช้ 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: การตั้งค่าการสร้างเชนใบรับรองทางเลือก
แม้ว่าบทความนี้จะแนะนำการตั้งค่าการสร้างเชนใบรับรองที่เฉพาะเจาะจงซึ่งให้ความสมดุลระหว่างความปลอดภัยและความสะดวกในการดำเนินการ แต่ก็มีการตั้งค่าทางเลือกอื่นๆ ซึ่งอธิบายไว้ด้านล่าง หลักการทั่วไปส่วนใหญ่ใช้ได้กับวิธีการอื่นๆ ด้วย เช่น
- การมีคีย์และใบรับรองลีฟโดยตรงสำหรับโหนด Cassandra หรือแอปพลิเคชันไคลเอ็นต์ทุกรายการ (โดยไม่มีใบรับรองรูทหรือระดับกลางสำหรับลงนาม) ซึ่งอาจทำให้การหมุนเวียนใบรับรองซับซ้อน
- การมีชุดรูทและระดับกลางหลายชุดสำหรับกรณีการใช้งานต่างๆ เช่น โหนด Cassandra มีชุดใบรับรองรูท/ใบรับรองกลาง 1 ชุดซึ่งใช้ลงนามใบรับรอง Leaf ทั้งหมดของ Cassandra ในทำนองเดียวกัน แอปพลิเคชันไคลเอ็นต์ทั้งหมดอาจมีชุดรูท/ระดับกลางแยกกัน 1 ชุดสำหรับลงนามใบรับรอง Leaf ของแอปพลิเคชัน การตั้งค่าดังกล่าวใช้ได้ แต่ต้องเพิ่มเชนใบรับรองรูท/ใบรับรองกลางลงใน Truststore ที่เหมาะสม ในตัวอย่างนี้ Truststore ของ Cassandra ควรมีใบรับรองรูท/ใบรับรองกลางของไคลเอ็นต์ และแอปพลิเคชันไคลเอ็นต์ควรมีเชนรูท/ใบรับรองกลางของโหนด Cassandra ใน Truststore
- เช่นเดียวกับด้านบน คุณสามารถมีชุดใบรับรองรูทและใบรับรองกลางหลายชุดสำหรับภูมิภาคต่างๆ แต่ไคลเอ็นต์และเซิร์ฟเวอร์ทั้งหมดในทุกภูมิภาคต้องทราบเชนรูทและเชนใบรับรองกลางทั้งหมดโดยเพิ่มเชนเหล่านั้นทั้งหมดลงใน Truststore ที่กำหนดค่าไว้