TLS (Transport Layer Security) หรือที่รู้จักว่า SSL ใช้เข้ารหัสการเชื่อมต่อระหว่าง Client และ Server
ทำไมต้องใช้ TLS
- การเชื่อมต่อไม่เข้ารหัส -> ข้อมูลถูกดักฟังได้
- MySQL ใช้ TLS (ไม่ใช้ SSL protocol เดิมเพราะอ่อนแอ)
- TLS ตรวจจับการเปลี่ยนแปลง/ซ้ำ/สูญหายของข้อมูล
- ใช้ X.509 สำหรับยืนยันตัวตน
ขั้นตอนเปิดใช้งาน TLS
- กำหนด ssl-cert และ ssl-key ในไฟล์ config ตอนเริ่มเซิร์ฟเวอร์
- สร้าง Certificate/Key ด้วย OpenSSL หรือ
mysql_ssl_rsa_setup --datadir=./certs - Reload TLS ด้วย
ALTER INSTANCE RELOAD TLS(ไม่ต้องรีสตาร์ท) - ตั้งค่า Client - พยายามเข้ารหัสโดยค่าเริ่มต้น
- ควบคุมพฤติกรรม Client ด้วย
--ssl-mode:
| โหมด | ความหมาย |
|---|---|
| บังคับเข้ารหัส | |
| ตรวจสอบ CA | |
| ตรวจสอบ CA + Hostname |
การตรวจสอบตัวตน (Authentication)
- Server: ระบุ ssl-cert, ssl-key, ssl-ca
- Client: ระบุ --ssl-cert, --ssl-key, --ssl-ca
- Certificate ต้องลงนามโดย CA เดียวกัน
- Server-to-client authentication เป็นทางเลือก (Optional)
ตรวจสอบสถานะการเชื่อมต่อ
mysql> \s # ดูบรรทัด SSL: Cipher in use is ...