Cloudflare
Cloudflare SSL Mode คืออะไร?
Cloudflare เป็น CDN และ DNS Service ที่จัดการการเชื่อมต่อ HTTPS ระหว่างผู้เยี่ยมชมและเซิร์ฟเวอร์ของคุณ SSL Mode ของ Cloudflare คือการตั้งค่าว่า Cloudflare ควรจะเข้ารหัสการเชื่อมต่อ HTTPS อย่างไร นี่เป็นการตั้งค่าที่แตกต่างจากการติดตั้ง SSL Certificate บนเซิร์ฟเวอร์ของคุณ (Hosting) Cloudflare มี SSL Mode 4 แบบให้เลือก และการเลือกที่ผิดจะทำให้เกิด Redirect Loop หรือปัญหาความปลอดภัยอื่น ๆ
SSL Mode 4 ประเภท: Off, Flexible, Full, Full Strict
1. Mode: Off (ปิดใช้งาน)
เมื่อเลือก "Off" Cloudflare จะไม่เข้ารหัสการเชื่อมต่อระหว่างผู้เยี่ยมชมและ Cloudflare นอกจากนี้ Cloudflare ยังไม่บังคับให้ HTTPS อีก ผู้เยี่ยมชมสามารถเข้าผ่าน HTTP ได้ตามปกติ
- ความปลอดภัย — ต่ำที่สุด ไม่มีการเข้ารหัส
- ความเร็ว — เร็วสุด เพราะไม่ต้องเข้ารหัส
- กรณีใช้งาน — เว็บไซต์ที่ไม่มีข้อมูลส่วนตัว ไม่แนะนำสำหรับเว็บทั่วไป
- การเชื่อมต่อ — ผู้เยี่ยมชม (HTTP) ← Cloudflare (HTTP) ← เซิร์ฟเวอร์ (HTTP)
2. Mode: Flexible (ยืดหยุ่น)
Cloudflare เข้ารหัสการเชื่อมต่อระหว่างผู้เยี่ยมชมกับ Cloudflare เท่านั้น (HTTPS) แต่จากนั้นการเชื่อมต่อระหว่าง Cloudflare กับเซิร์ฟเวอร์ของคุณยังคงเป็น HTTP (ไม่เข้ารหัส) ถึงแม้เซิร์ฟเวอร์ของคุณไม่มี SSL Certificate ก็สามารถใช้ได้
- ความปลอดภัย — ปานกลางต่ำ ข้อมูลอาจเสี่ยงระหว่าง Cloudflare และเซิร์ฟเวอร์
- ความเร็ว — เร็ว เพราะบางส่วนไม่เข้ารหัส
- กรณีใช้งาน — Hosting เก่าที่ไม่มี SSL Certificate หรือต้องการใช้ Cloudflare กับเซิร์ฟเวอร์ที่ไม่รองรับ HTTPS
- การเชื่อมต่อ — ผู้เยี่ยมชม (HTTPS) ← Cloudflare (HTTP) ← เซิร์ฟเวอร์ (HTTP)
3. Mode: Full (เต็ม)
Cloudflare เข้ารหัสการเชื่อมต่อทั้งสองฝั่ง: ผู้เยี่ยมชม → Cloudflare (HTTPS) และ Cloudflare → เซิร์ฟเวอร์ (HTTPS) วิธีนี้เหมาะสำหรับเซิร์ฟเวอร์ที่มี SSL Certificate แล้ว ไม่ว่าจะเป็น Self-signed หรือ Trusted
- ความปลอดภัย — สูง ทั้งสองด้านเข้ารหัส
- ความเร็ว — ปานกลาง เนื่องจากต้องเข้ารหัสสองครั้ง
- กรณีใช้งาน — Shared Hosting ที่มี Self-signed Certificate หรือ Hosting ที่มี SSL Certificate ธรรมชาติ
- การเชื่อมต่อ — ผู้เยี่ยมชม (HTTPS) ← Cloudflare (HTTPS) ← เซิร์ฟเวอร์ (HTTPS/Self-signed)
4. Mode: Full (Strict) (เต็มแบบเข้มงวด)
เหมือน Full แต่เข้มงวดกว่า Cloudflare จะตรวจสอบว่า SSL Certificate บนเซิร์ฟเวอร์เป็นแบบ Trusted (ออกจาก Certificate Authority ที่ยอมรับ) หรือ Cloudflare ให้มา ถ้า Certificate ไม่ถูกต้อง Redirect Loop อาจเกิดขึ้น
- ความปลอดภัย — สูงสุด ตรวจสอบ Certificate Validity อย่างเข้มงวด
- ความเร็ว — ปานกลาง เนื่องจากต้องเข้ารหัสและตรวจสอบ
- กรณีใช้งาน — เว็บไซต์ที่เก็บข้อมูลสำคัญ Shared Hosting ที่มี Auto SSL Trusted Certificate
- การเชื่อมต่อ — ผู้เยี่ยมชม (HTTPS) ← Cloudflare (HTTPS) ← เซิร์ฟเวอร์ (HTTPS/Trusted)
สาเหตุ Redirect Loop และการแก้ไข
Redirect Loop เป็นปัญหาทั่วไปเมื่อตั้งค่า Cloudflare SSL Mode ผิด สมมุติเซิร์ฟเวอร์ของคุณบังคับ Redirect HTTP ไปยัง HTTPS (.htaccess หรือ cPanel settings) เมื่อรวมกับ Cloudflare Mode ที่ผิด ก็จะเกิด Loop ที่ไม่สิ้นสุด:
ถ้าไม่แน่ใจว่า Loop เกิดที่ชั้นไหน ใช้ เครื่องมือตรวจ Redirect Chain ของ dnsxray.com ไล่ดู Redirect ทีละ hop ได้เลยว่าเว็บเด้งจาก http ไป https แล้ววนกลับตรงจุดไหน ช่วยแยกได้ว่าปัญหาอยู่ที่ Cloudflare SSL Mode หรือ .htaccess ฝั่งโฮสต์
- ผู้เยี่ยมชมเข้า HTTP → Cloudflare (Flexible) แปลง HTTPS → เซิร์ฟเวอร์ได้ HTTP → เซิร์ฟเวอร์บังคับ Redirect เป็น HTTPS → Cloudflare แปลงเป็น HTTP → Redirect วนซ้ำ
วิธีแก้ไข:
- ถ้าเซิร์ฟเวอร์ไม่มี SSL: ใช้ Mode "Flexible" และ ลบ Redirect HTTP to HTTPS ออกจาก .htaccess หรือ cPanel
- ถ้าเซิร์ฟเวอร์มี SSL: ใช้ Mode "Full" และ เก็บ Redirect HTTP to HTTPS ไว้ในเซิร์ฟเวอร์
- ถ้าเซิร์ฟเวอร์มี Trusted SSL: ใช้ Mode "Full (Strict)" เหมาะที่สุด
ควรเลือก SSL Mode ไหน?
สำหรับ Shared Hosting ส่วนใหญ่:
ตอบคือ Full (Strict) เพราะ Shared Hosting ส่วนใหญ่มี AutoSSL ที่ให้ Trusted SSL Certificate จากนั้นตั้งค่าดังนี้:
- Cloudflare SSL Mode = Full (Strict)
- cPanel บังคับ Redirect HTTP to HTTPS อยู่แล้ว
- เพิ่ม HSTS Header เพิ่มเติม (optional แต่แนะนำ)
สำหรับ Hosting เก่าที่ไม่มี SSL:
ตอบคือ Flexible และ:
- ไม่ต้องเปิด SSL บนเซิร์ฟเวอร์
- ไม่ต้องติดตั้ง Certificate บนเซิร์ฟเวอร์
- เพิ่มกฎ Page Rule ใน Cloudflare บังคับ HTTPS ที่ URL specific
วิธีตั้งค่า SSL Mode ใน Cloudflare
ขั้นตอนทั่วไป:
- Login เข้า Cloudflare Dashboard
- เลือก Domain ที่ต้องการตั้งค่า
- ไปที่แท็บ SSL/TLS
- ดู Encryption Mode — จะแสดง 4 ตัวเลือก: Off, Flexible, Full, Full (Strict)
- คลิกเลือก Mode ที่ต้องการ
- บันทึกเปลี่ยนแปลง
ตรวจสอบว่า SSL Mode ทำงานถูกต้อง
หลังจากเปลี่ยน SSL Mode ให้ทดสอบด้วยวิธีต่อไปนี้:
# 1. ตรวจสอบการเชื่อมต่อ HTTPS
curl -v https://yourdomain.com 2>&1 | grep -i "ssl\|tls\|certificate"
# 2. ตรวจสอบ HTTP Redirect
curl -I http://yourdomain.com
# 3. ดู Header ที่ Cloudflare ส่งมา
curl -I https://yourdomain.com | grep -i "server\|cf-"
# 4. ทดสอบจากเบราว์เซอร์ (F12 > Network > ดู Protocol)
# ต้องเห็น h2 หรือ http/2 ถ้า HTTPS ทำงาน
# 5. ตรวจสอบ SSL Certificate Chain ของเซิร์ฟเวอร์
echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -issuer
แก้ปัญหาที่พบบ่อย
Error: "Redirect Loop — Too many redirects"
สาเหตุ: SSL Mode ของ Cloudflare ไม่ตรงกับการตั้งค่า Redirect บนเซิร์ฟเวอร์
- ถ้าใช้ Flexible: ลบ Redirect HTTP to HTTPS ออกจาก .htaccess ของเซิร์ฟเวอร์ (ทั้งบรรทัด)
- ถ้าใช้ Full หรือ Full (Strict): เก็บ Redirect HTTP to HTTPS ไว้ ไม่ต้องลบ
- ลองล้าง Browser Cache: Redirect ที่เก่าบางทีอาจ Cached ให้ล้างและลองใหม่
Error: "SSL_ERROR_UNRECOGNIZED_NAME" หรือ "Certificate doesn't match domain"
สาเหตุ: ใช้ Mode "Full (Strict)" แต่ Certificate บนเซิร์ฟเวอร์ไม่ Trusted หรือไม่ตรงกับ Domain
- ลองเปลี่ยนเป็น Full: ไม่ใช้ Strict ชั่วคราว
- ตรวจสอบ SSL บนเซิร์ฟเวอร์: ใน cPanel ดู Certificate ว่า CN (Common Name) หรือ SAN (Subject Alternative Names) ตรงกับ Domain หรือไม่
- ติดตั้ง AutoSSL ใหม่: ให้ AutoSSL (Let's Encrypt) ออก Certificate ใหม่
Error: "ดำเนินการขณะเปลี่ยน SSL Mode"
Cloudflare SSL Mode ใช้เวลาแพร่ไป 5-30 นาที ก่อน Mode ใหม่ลงไปทั่ว Server ของ Cloudflare
- รอสัก 30 นาที: แล้วทดสอบใหม่
- ล้าง Cache ทั้งหมด: ไป Cloudflare Dashboard → Caching → Purge Everything
- ใช้ Incognito Mode: ทดสอบจากเบราว์เซอร์ Incognito (ไม่มี Cache)
Error: "ใช้ Page Rule แล้วยังเกิด Redirect Loop"
Page Rule บำงครั้ง Conflict กับ SSL Mode ตั้งค่า
- ตรวจสอบ Page Rule Priority: หลายๆ Rule อาจชนกัน ลองลบ Rule ที่ Conflict
- ใช้ Transform Rules แทน: Cloudflare มี Transform Rules ที่ใหม่กว่า Page Rule
- ทดสอบโดยปิด Page Rule: ปิด Page Rule ชั่วคราว ดูว่า Redirect Loop หายหรือไม่
Error: "Website slow ด้วย Full (Strict)"
เพราะ Cloudflare ต้องตรวจสอบ Certificate เพิ่มเติม ทำให้ Latency เพิ่มขึ้นเล็กน้อย
- ปกติ Impact น้อยมาก (< 50ms) ขึ้นอยู่กับ Location
- ถ้ารู้สึกช้า ให้ใช้ Cloudflare Argo (เพิ่มค่า) หรือเปลี่ยนเป็น Full แทน
คำถามที่พบบ่อย
Q: ต้องเปลี่ยน SSL Mode ทุกครั้งที่ติดตั้ง SSL ใหม่หรือ?
A: ไม่ ไม่ต้อง เมื่อติดตั้ง SSL Certificate ใหม่บนเซิร์ฟเวอร์แล้ว Cloudflare จะใช้งาน Certificate นั้นโดยอัตโนมัติ ไม่จำเป็นต้องเปลี่ยน SSL Mode
Q: ถ้าวิ่ง Cloudflare คนเดียว เซิร์ฟเวอร์ต้องมี SSL หรือไม่?
A: ขึ้นอยู่กับ Mode ถ้าใช้ Flexible ไม่ต้องมี SSL บนเซิร์ฟเวอร์ ถ้าใช้ Full หรือ Full (Strict) ต้องมี
Q: Page Rule กับ SSL Mode ต่างกันอย่างไร?
A: SSL Mode เป็นการตั้งค่า Global สำหรับทุก URL ของ Domain ขณะที่ Page Rule สำหรับ URL Specific เช่นบังคับ HTTPS เฉพาะ /admin/ เท่านั้น ควรใช้ Page Rule เพื่อ Fine-tune