คู่มือ Encryption in Transit Add-On สำหรับ ฐานข้อมูล
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง
ฐานข้อมูล Redis ที่ได้รับการรับรองจาก Ruk-Com นั้นมาพร้อมกับส่วนเสริมในตัวที่ใช้ “การเข้ารหัสระหว่างทาง” ฟังก์ชั่นนี้รับประกันการปกป้องข้อมูลด้วยการเชื่อมต่อที่เข้ารหัส SSL/TLS ในขณะที่เคลื่อนย้ายระหว่างเซิร์ฟเวอร์หลังจากการติดตั้ง Add-on การสนับสนุนสำหรับการเชื่อมต่อที่ปลอดภัยจะได้รับการกำหนดค่าบนพอร์ตแยกต่างหาก6380ในขณะที่ยังคงรักษาพอร์ตเริ่มต้นไว้6379เพื่อยอมรับการเชื่อมต่อที่ไม่ได้เข้ารหัสสำหรับความเข้ากันได้แบบย้อนหลัง (หากจำเป็นสามารถปิดใช้งานได้ผ่านการตั้งค่า)
การติดตั้งส่วนเสริม
ส่วนเสริมสามารถติดตั้งได้ที่ด้านบนของ Node Redis เท่านั้น
- ในแดชบอร์ดแพลตฟอร์มให้ไปที่ส่วนเสริมส่วนของเลเยอร์ฐานข้อมูล Redis ที่เหมาะสมแล้วคลิกติดตั้งสำหรับการเชื่อมต่อที่เข้ารหัส Redisสารละลาย.
เคล็ดลับ:ส่วนเสริมยังมีให้จากตลาดและสามารถนำเข้าจากที่เก็บ GitHub ที่เหมาะสม
2. ภายในหน้าต่างการติดตั้งที่เปิดอยู่ให้เลือกเป้าหมายEnvironmentและกลุ่ม Nodeตำแหน่งที่จะติดตั้งส่วนเสริม
- ภายในหนึ่งนาที Environment ของคุณจะได้รับการกำหนดค่า
บันทึก:ท่าเรือ6380ใช้สำหรับการเชื่อมต่อที่ปลอดภัยตามค่าเริ่มต้นและจะถูกเพิ่มลงในโดยอัตโนมัติกฎไฟร์วอลล์ระหว่างการติดตั้งส่วนเสริม
คุณสามารถค้นหาใบรับรอง SSL ที่สร้างขึ้นภายใต้/var/lib/Ruk-Com PaaS/keys/SSL-TLSโฟลเดอร์
ข้อมูลจำเพาะของส่วนเสริม
ด้านล่างคุณสามารถเรียนรู้เกี่ยวกับกระบวนการสร้างใบรับรองและข้อมูลเฉพาะ:
- ส่วนเสริมก่อนการติดตั้งเรดลี– ทางเลือก Go-based ที่มีมนุษยธรรมสำหรับทางการredis-cliคุณประโยชน์.
- ใบรับรองถูกสร้างขึ้นด้วย/usr/local/sbin/selfcertgenคุณประโยชน์.
- ใบรับรองจะลงนามด้วยตนเองและออกให้สำหรับชื่อโฮสต์ของ Node นั้นๆหมายความว่าแต่ละ Node มีชุดใบรับรองของตัวเองและคุณต้องใช้ใบรับรองที่สอดคล้องกับ Node ที่เข้าถึงเพื่อตรวจสอบความถูกต้อง
- เนื่องจากข้อกำหนดเฉพาะของ Redis ชื่อโฮสต์สำรองจะถูกเพิ่มเมื่อสร้างใบรับรองเซิร์ฟเวอร์:
สำเนา
echo "subjectAltName = @alt_names
[alt_names]
IP.1 = ${ALTNAME}" > /tmp/altname.ext
RANDFILE=/tmp/.random openssl x509 -req -in ${CERT_DIR}/server-req.pem -days 3650 -CA ${ROOT_CERT} -CAkey ${ROOT_KEY} -set_serial 01 -extfile /tmp/altname.ext > ${CERT_DIR}/server.crt
- ใบรับรองจะถูกเก็บไว้ภายใน/var/lib/Ruk-Com PaaS/keys/SSL-TLSโฟลเดอร์ (เข้าถึงได้ผ่านทางกุญแจทางลัดในตัวจัดการไฟล์) มีโฟลเดอร์ย่อยสองโฟลเดอร์:
- เซิร์ฟเวอร์– ใบรับรองเซิร์ฟเวอร์ใช้เพื่อจัดเตรียมการเข้ารหัส TLS ของการเชื่อมต่อกับฐานข้อมูล Redis
- ลูกค้า– สามารถใช้ใบรับรองไคลเอนต์ที่ดาวน์โหลดได้เพื่อตรวจสอบการเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์ฐานข้อมูล
การกำหนดค่าส่วนเสริมทั้งหมดมีให้ผ่านทางแยกต่างหาก/etc/redis.confไฟล์การกำหนดค่า (เพิ่มลงในไฟล์รายการโปรดรายการในตัวจัดการไฟล์)
ด้านล่างนี้คุณสามารถตรวจสอบรายการการตั้งค่าที่เกี่ยวข้องกับ SSL ที่พบบ่อยที่สุดได้:
- tls-พอร์ต- ระบุพอร์ตที่ใช้สำหรับการเชื่อมต่อ SSL (6380).
- ท่าเรือ– ตั้งค่าพอร์ตที่สามารถรับการเชื่อมต่อที่ไม่ได้เข้ารหัส (6379).
เคล็ดลับ:ค่าทั้งสองจะถูกแยกจากกันโดยเจตนาโดยค่าเริ่มต้นเพื่อให้แน่ใจว่ามีความเข้ากันได้แบบย้อนหลังหากคุณต้องการปิดการใช้งานการเชื่อมต่อที่ไม่ได้เข้ารหัสโดยสมบูรณ์ให้ตั้งค่าท่าเรือคำสั่งถึง0.
- ไฟล์ tls-cert,ไฟล์ tls-key,tls-ca-cert-ไฟล์– คำสั่งระบุเส้นทางไปยังใบรับรอง SSL ฝั่งเซิร์ฟเวอร์
- tls-auth-ลูกค้า– กำหนดค่าหากไคลเอ็นต์ (รวมถึงเซิร์ฟเวอร์จำลอง) บนพอร์ต TLS จำเป็นต้องตรวจสอบสิทธิ์โดยใช้ใบรับรองฝั่งไคลเอ็นต์ที่ถูกต้องตั้งค่าเป็น “ไม่จำเป็น” โดยค่าเริ่มต้น - หากระบุไว้ใบรับรองไคลเอ็นต์จะได้รับการยอมรับและจะต้องถูกต้อง (แต่ไม่จำเป็น)
- การจำลองแบบ tlsและtls-คลัสเตอร์- สามารถเปิดใช้งานได้หากจำเป็นเพื่อรองรับการเชื่อมต่อโครงข่าย TLS ในคลัสเตอร์ Redis
การกำหนดค่าส่วนเสริม
หลังการติดตั้งคุณจะพบส่วนเสริมภายใต้ส่วนเสริมแท็บสำหรับเลเยอร์ที่เหมาะสม
ที่นี่คุณสามารถคลิกออกใบรับรองใหม่อีกครั้งปุ่มเพื่อสร้างใบรับรอง SSL สำหรับการเชื่อมต่อที่ปลอดภัยอีกครั้ง
หากไม่ต้องการอีกต่อไปให้ลบส่วนเสริมออกจากเลเยอร์โดยเลือกถอนการติดตั้งตัวเลือกในเมนูเสริมที่มุมขวาบน
การเชื่อมต่อที่ปลอดภัยกับ Redis
สำหรับการเชื่อมต่อที่ปลอดภัย (เราจะใช้redis-cliยูทิลิตีเป็นตัวอย่าง) ให้ระบุคำสั่งด้วยตัวเลือกต่อไปนี้:
เคล็ดลับ:คุณสามารถจัดเก็บรหัสผ่านฐานข้อมูลไว้ในที่เฉพาะREDISCLI_AUTHตัวแปรเพื่อหลีกเลี่ยงการเปิดเผยในบรรทัดคำสั่ง:
สำเนา
export REDISCLI_AUTH={password}
สำเนา
redis-cli -p 6380 --tls --cacert /var/lib/jelastic/keys/SSL-TLS/client/root.crt {command}
คุณสามารถดำเนินการตามต้องการได้{สั่งการ}หรือละไว้เพื่อเชื่อมต่อกับฐานข้อมูลในโหมดโต้ตอบ
หากเซิร์ฟเวอร์ต้องการการรับรองความถูกต้องโดยใช้ใบรับรองฝั่งไคลเอ็นต์คุณสามารถระบุใบรับรองและคีย์ส่วนตัวที่เกี่ยวข้องได้โดยใช้--ใบรับรองและ--สำคัญพารามิเตอร์
สำเนา
redis-cli -p 6380 --tls --cert /var/lib/jelastic/keys/SSL-TLS/client/client.crt --key /var/lib/jelastic/keys/SSL-TLS/client/client.key --cacert /var/lib/jelastic/keys/SSL-TLS/client/root.crt {command}
สำหรับการเชื่อมต่อภายนอกไคลเอ็นต์จำเป็นต้องอัปโหลดไฟล์ใบรับรอง (ลูกค้า.crt,ลูกค้า.คีย์,root.crt) ไปยังคอมพิวเตอร์/คอนเทนเนอร์/VM และใช้ไฟล์-ชมตัวเลือกเพื่อระบุชื่อโฮสต์ระยะไกลหรือที่อยู่ IP
ตัวอย่างการกำหนดค่า SSL
- บังคับให้เชื่อมต่อ SSL (สำหรับ Node แบบสแตนด์อโลน)
บังคับใช้การเชื่อมต่อที่เข้ารหัส TLS และปิดใช้งานการเชื่อมต่อที่ไม่ปลอดภัยสำหรับไคลเอนต์โดยสมบูรณ์
-
ไปที่/etc/redis.confไฟล์การกำหนดค่าและเปลี่ยน "ท่าเรือ” คำสั่งถึง0. มันจะปิดการใช้งานการเชื่อมต่อที่ไม่ได้เข้ารหัส
-
ต่อไปให้เปลี่ยน “tls-พอร์ต” ไปยังพอร์ต Redis เริ่มต้น6379ในไฟล์เดียวกัน
-
หากคุณต้องการบังคับใช้ใบรับรองไคลเอ็นต์ (สำหรับการตรวจสอบสิทธิ์และ TLS ร่วมกัน) ให้ตั้งค่า "tls-auth-ลูกค้า” คำสั่งถึง “ใช่".
-
ไปที่การตั้งค่าไฟร์วอลล์และลบกฎสำหรับพอร์ต6380เพราะมันไม่จำเป็นอีกต่อไป
-
สุดท้ายให้รีสตาร์ทคอนเทนเนอร์ Redis เพื่อใช้การเปลี่ยนแปลง
ขณะนี้บริการ Redis พร้อมใช้งานผ่านการเชื่อมต่อ SSL บนพอร์ตเท่านั้น6379.
- การเชื่อมต่อระหว่างคลัสเตอร์ / Sentinel ผ่าน SSL
การเชื่อมต่อระหว่างกันของคลัสเตอร์ Redis จะถูกเก็บไว้แบบธรรมดา (ไม่ปลอดภัย) ตามค่าเริ่มต้นช่วยให้มั่นใจได้ถึงความเข้ากันได้แบบย้อนหลังกับคลัสเตอร์ที่มีอยู่แล้วอย่างไรก็ตามหากคุณต้องการเปิดใช้งานการเข้ารหัสการเชื่อมต่อโครงข่ายให้ทำตามขั้นตอนด้านล่าง:
บันทึก:การปรับมาตราส่วนแบบอัตโนมัติและแบบแมนนวลอาจทำงานไม่ถูกต้องหลังจากการเปลี่ยนแปลงเนื่องจากได้รับการออกแบบสำหรับการเชื่อมต่อแบบธรรมดาที่ไม่ใช่ SSL
-
หากคุณกำลังใช้โซลูชันแบบคลัสเตอร์ตรวจสอบให้แน่ใจว่า “tls-คลัสเตอร์” คำสั่งใน/etc/redis.confไฟล์ถูกตั้งค่าเป็น “ใช่” (ไม่ใส่เครื่องหมายข้อคิดเห็นตัวเลือก)
-
หากคุณกำลังใช้การจำลองแบบ Sentinel ให้ยกเลิกหมายเหตุ "การจำลองแบบ tls” เช่นกัน (ควรเป็น “ใช่" ค่า).
-
“tls-auth-ลูกค้า” คำสั่งควรเก็บไว้เป็น “ไม่จำเป็น” (ค่าเริ่มต้น)
-
การกำหนดค่าคลัสเตอร์เริ่มต้นใช้พอร์ต6379สำหรับการเชื่อมต่อโครงข่ายคลัสเตอร์ดังนั้นคุณควรเปลี่ยน "tls-พอร์ต” คำสั่งถึง6379หรือเปลี่ยนพอร์ตคลัสเตอร์/การจำลองเป็น6380.
-
รีสตาร์ทคลัสเตอร์ Redis เพื่อใช้การเปลี่ยนแปลง
- การเชื่อมต่อโครงข่าย SSL ของคลัสเตอร์หลายภูมิภาค
เมื่อทำงานกับคลัสเตอร์ Redis หลายภูมิภาคต้องใช้ใบรับรองหลักเดียวกันบนทุก Node ของ Environment ทั้งหมดเพื่อการเชื่อมต่อระหว่าง Node ผ่าน TLS ได้สำเร็จ
-
ติดตั้งโปรแกรมเสริม SSL บน Environment แรกของคลัสเตอร์หลายภูมิภาค
-
สำเนา/var/lib/Ruk-Com PaaS/keys/SSL-TLS/server/root.crtและ/var/lib/Ruk-Com PaaS/keys/SSL-TLS/server/root.crtไปที่/var/lib/Ruk-Com PaaS/keys/SSL-TLS/ไดเร็กทอรีบน Node ทั้งหมดของ Environment ที่สองและสาม
-
ตอนนี้ให้ติดตั้งส่วนเสริม SSL ใน Environment เหล่านี้ตามปกติ - ใบรับรองหลักใหม่จะไม่ถูกสร้างขึ้นด้วยวิธีนี้



