Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เปิดใช้งาน TLS สำหรับไคลเอนต์ MySQL


TLS เรียกอีกอย่างว่า SSL (Secure Sockets Layer) หมายถึง Transport Layer Security

เมื่อมีการเชื่อมต่อที่ไม่ได้เข้ารหัสระหว่างไคลเอนต์ MySQL และเซิร์ฟเวอร์ บุคคลที่สามารถเข้าถึงเครือข่ายสามารถดูการรับส่งข้อมูลทั้งหมดและตรวจสอบข้อมูลที่ส่งหรือรับระหว่างไคลเอนต์และเซิร์ฟเวอร์ เมื่อผู้ใช้ต้องการย้ายข้อมูลผ่านเครือข่ายด้วยวิธีที่ปลอดภัย การเชื่อมต่อที่ไม่ได้เข้ารหัสจะไม่เป็นที่ยอมรับ

ในการทำให้ข้อมูลประเภทใดก็ตามที่ไม่สามารถอ่านได้ ต้องใช้การเข้ารหัส อัลกอริธึมการเข้ารหัสมักจะมีองค์ประกอบด้านความปลอดภัยที่ช่วยต่อต้านการโจมตีที่รู้จักหลายประเภท ซึ่งบางส่วนรวมถึงการเปลี่ยนลำดับของข้อความที่เข้ารหัสหรือการเล่นข้อมูลซ้ำสองครั้ง MySQL รองรับการเชื่อมต่อที่เข้ารหัสที่เกิดขึ้นระหว่างไคลเอนต์และเซิร์ฟเวอร์ที่พวกเขาทั้งคู่ใช้โปรโตคอล TLS แต่ MySQL ไม่ได้ใช้โปรโตคอล SSL สำหรับการเชื่อมต่อที่เข้ารหัสเนื่องจากการเข้ารหัสนั้นอ่อนแอ

TLS ใช้อัลกอริธึมการเข้ารหัสเพื่อให้แน่ใจว่าข้อมูลที่ได้รับผ่านเครือข่ายสาธารณะนั้นเป็นข้อมูลที่เชื่อถือได้ มีหลายวิธีในการตรวจจับการเปลี่ยนแปลงข้อมูล การสูญหาย หรือการเล่นซ้ำ นอกจากนี้ TLS ยังใช้อัลกอริทึมที่มาพร้อมกับการยืนยันตัวตนด้วยความช่วยเหลือจากมาตรฐาน X.509

ขั้นตอนในการเปิดใช้งาน TLS

MySQL ทำการเข้ารหัสต่อการเชื่อมต่อ การเข้ารหัสสำหรับผู้ใช้ที่กำหนดอาจเป็นตัวเลือกหรือบังคับก็ได้ ซึ่งจะทำให้ผู้ใช้สามารถเลือกการเชื่อมต่อที่เข้ารหัสหรือไม่เข้ารหัสได้ขึ้นอยู่กับความต้องการของแอปพลิเคชัน

ให้เราเข้าใจว่าสามารถเปิดใช้งาน TLS สำหรับไคลเอนต์ MySQL ได้อย่างไร:

  • ต้องระบุพารามิเตอร์ ssl-cert และ ssl-key ในไฟล์การกำหนดค่าเมื่อเซิร์ฟเวอร์เริ่มทำงาน
  • ใบรับรองหรือคีย์ได้รับการลงนามและสร้างโดยใช้ OpenSSL
  • คีย์นี้ยังสามารถสร้างได้โดยใช้เครื่องมือ mysql_ssl_rsa_setup ใน MySQL:
    mysql_ssl_rsa_setup --datadir=./certs
  • หากพารามิเตอร์ถูกต้อง การเชื่อมต่อที่ปลอดภัยจะถูกส่งผ่านเป็นเอาต์พุตที่เปิดใช้งานเมื่อเริ่มต้น
  • ใบรับรอง คีย์ และ CA ถูกโหลดใหม่- คำสั่ง ALTER INSTANCE RELOAD TLS ถูกดำเนินการบนอินสแตนซ์ของเซิร์ฟเวอร์ เพื่อให้แน่ใจว่าอินสแตนซ์ของเซิร์ฟเวอร์จะไม่ต้องโหลดซ้ำ
  • ใบรับรองที่โหลดใหม่ คีย์ และ CA แสดงผลหลังจากดำเนินการเชื่อมต่อที่สร้างสำเร็จแล้ว
  • ไคลเอนต์ MySQL ได้รับการกำหนดค่าให้ใช้การเชื่อมต่อที่เข้ารหัส - การเชื่อมต่อที่เข้ารหัสนั้นพยายามตั้งค่าโดยค่าเริ่มต้น หากเซิร์ฟเวอร์ไม่รองรับการเชื่อมต่อที่เข้ารหัส การเชื่อมต่อที่ไม่ได้เข้ารหัสจะถูกส่งคืนโดยอัตโนมัติ
  • พฤติกรรมการเชื่อมต่อของไคลเอ็นต์สามารถเปลี่ยนแปลงได้โดยใช้ --ssl-mode Parameter:
    --ssl-mode=REQUIRED- Tells that en encrypted connection is needed.

ต้องเปิดใช้งานการตรวจสอบความถูกต้อง:หากไม่ได้ระบุพารามิเตอร์ ssl-ca ไคลเอ็นต์หรือเซิร์ฟเวอร์จะไม่ตรวจสอบสิทธิ์ตามค่าเริ่มต้น

  • ต้องระบุพารามิเตอร์ ssl-cert และ ssl-key ในเซิร์ฟเวอร์
  • พารามิเตอร์ --ssl-ca ถูกระบุในไคลเอนต์ MySQL
  • โหมด --ssl ถูกระบุเป็น VERIFY_CA ในไคลเอนต์ MySQL
  • ใบรับรอง (ssl-cert) ที่กำหนดค่าในเซิร์ฟเวอร์ได้รับการลงนามโดย CA ที่ระบุโดยพารามิเตอร์ไคลเอ็นต์ --ssl-ca
  • ถ้าไม่ใช่ การตรวจสอบสิทธิ์จะล้มเหลว

วิธีตรวจสอบสิทธิ์ไคลเอนต์ MySQL จากเซิร์ฟเวอร์:

  • เซิร์ฟเวอร์ที่ระบุพารามิเตอร์ ssl-cert, ssl-key และ ssl-ca
  • พารามิเตอร์ --ssl-cert และ --ssl-key ถูกระบุในไคลเอนต์
  • ใบรับรองที่กำหนดค่าโดยเซิร์ฟเวอร์และใบรับรองที่กำหนดค่าโดยไคลเอ็นต์ได้รับการลงนามโดย ssl-ca ที่ระบุโดยเซิร์ฟเวอร์
  • การตรวจสอบสิทธิ์เซิร์ฟเวอร์กับไคลเอ็นต์เป็นทางเลือก หากไคลเอ็นต์ไม่แสดงใบรับรองการระบุตัวตนในระหว่างการแฮนด์เชค TLS การเชื่อมต่อ TLS จะยังคงอยู่
  • ตรวจสอบว่าการเชื่อมต่อปัจจุบันใช้การเข้ารหัสหรือไม่