คำตอบสั้น ๆ: เข้าใจความต่างของโหมด Off, Flexible, Full และ Full (strict) บน Cloudflare แล้วเลือกโหมดที่ปลอดภัย พร้อมแก้ปัญหา Redirect วนและ Error 525 หรือ 526
คู่มือนี้อธิบาย Cloudflare ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
เมื่อเปิด Proxy (ไอคอนเมฆสีส้ม) บน Cloudflare การเชื่อมต่อจะแบ่งเป็นสองช่วง ช่วงแรกคือจากเบราว์เซอร์ของผู้ใช้ไปยัง Cloudflare และช่วงที่สองคือจาก Cloudflare ไปยังเซิร์ฟเวอร์ต้นทาง (Origin) ของคุณ ค่า SSL/TLS Mode เป็นตัวกำหนดว่าช่วงที่สองจะเข้ารหัสหรือไม่ และจะตรวจใบรับรองของเซิร์ฟเวอร์เข้มงวดแค่ไหน
การเลือกโหมดผิดทำให้เกิดได้ทั้งปัญหาความปลอดภัย (ผู้ใช้เห็นแม่กุญแจ แต่ข้อมูลวิ่งไปเซิร์ฟเวอร์แบบไม่เข้ารหัส) และปัญหาเว็บเข้าไม่ได้ เช่น Redirect วนไม่จบ บทความนี้อธิบายแต่ละโหมดและขั้นตอนไปให้ถึง Full (strict) ซึ่งเป็นโหมดที่แนะนำ หากยังไม่ได้ย้าย DNS มาที่ Cloudflare ดู ทำ DNS ใช้เองด้วย Cloudflare ก่อน
สิ่งที่ต้องเตรียม
- บัญชี Cloudflare ที่เพิ่มโดเมนแล้ว และ Record ของเว็บเปิด Proxy (สถานะ Proxied)
- สิทธิ์ติดตั้งใบรับรองบนเซิร์ฟเวอร์ต้นทาง เช่น ผ่าน Plesk, DirectAdmin หรือ SSH
- รู้ว่าเว็บเซิร์ฟเวอร์ของคุณเป็น Nginx, Apache, LiteSpeed หรือ IIS
เปรียบเทียบแต่ละโหมด
| โหมด | ผู้ใช้ถึง Cloudflare | Cloudflare ถึง Origin | ตรวจใบรับรอง Origin | คำแนะนำ |
|---|---|---|---|---|
| Off | HTTP | HTTP | ไม่ตรวจ | ห้ามใช้กับเว็บจริง |
| Flexible | HTTPS | HTTP | ไม่ตรวจ | ใช้เฉพาะชั่วคราวเมื่อ Origin ยังไม่มี SSL เลย |
| Full | HTTPS | HTTPS | ไม่ตรวจความถูกต้อง รับใบ Self-signed หรือหมดอายุได้ | ดีกว่า Flexible แต่ยังโดนดักกลางทางได้ |
| Full (strict) | HTTPS | HTTPS | ตรวจว่าใบยังไม่หมดอายุ ชื่อตรง และออกโดย CA ที่เชื่อถือได้หรือ Cloudflare Origin CA | โหมดที่แนะนำ |
นอกจากนี้ Cloudflare มีตัวเลือก Strict (SSL-Only Origin Pull) ที่บังคับให้เชื่อมต่อ Origin ด้วย HTTPS เสมอแม้ผู้ใช้เข้ามาทาง HTTP ใช้ในกรณีเฉพาะ และแพ็กเกจที่เปิดให้ใช้อาจต่างกัน
หมายเหตุ: โหมด Flexible ทำให้ผู้ใช้เห็นแม่กุญแจบนเบราว์เซอร์ แต่ข้อมูลที่กรอก เช่นรหัสผ่าน ถูกส่งจาก Cloudflare ไปเซิร์ฟเวอร์แบบข้อความธรรมดาผ่านอินเทอร์เน็ต จึงไม่ควรใช้กับเว็บที่มีการ Login หรือฟอร์ม
ขั้นตอนที่ 1: ตรวจว่า Origin มีใบรับรองที่ใช้ได้
ทดสอบเชื่อมต่อตรงไปที่ IP ของเซิร์ฟเวอร์โดยข้าม Cloudflare (แทน 203.0.113.10 ด้วย IP จริง)
curl -svo /dev/null --resolve example.com:443:203.0.113.10 https://example.com 2>&1 | grep -E "subject:|expire date:|issuer:|SSL certificate verify"
ถ้าได้บรรทัด SSL certificate verify ok. พร้อมวันหมดอายุในอนาคต แปลว่าพร้อมใช้ Full (strict) ได้ทันที ถ้าเจอ self-signed certificate หรือ certificate has expired ให้ทำขั้นตอนที่ 2 ก่อน
ขั้นตอนที่ 2: ติดตั้งใบรับรองบน Origin (เลือกอย่างใดอย่างหนึ่ง)
ทางเลือก A: Let's Encrypt
ใช้ได้กับทุกโหมดและทำงานได้แม้วันหนึ่งปิด Proxy ดูวิธีตามแผงควบคุมที่ใช้ เช่น Certbot บน Nginx หรือ Let's Encrypt บน DirectAdmin การตรวจสอบแบบ HTTP-01 ทำงานผ่าน Proxy ของ Cloudflare ได้ตามปกติ ตราบใดที่ไม่มีกฎบังคับ Redirect ที่ขวางเส้นทาง /.well-known/acme-challenge/
ทางเลือก B: Cloudflare Origin Certificate
- ใน Cloudflare Dashboard เลือกโดเมน ไปที่ SSL/TLS แล้วเลือก Origin Server
- กด Create Certificate เลือกให้ Cloudflare สร้าง Private Key ใส่ชื่อ
example.comและ*.example.comอายุใบค่าเริ่มต้นคือ 15 ปี - คัดลอก Origin Certificate และ Private Key ไปติดตั้งบนเซิร์ฟเวอร์ Private Key จะแสดงครั้งเดียว ต้องเก็บทันที
ใบนี้เชื่อถือได้เฉพาะเมื่อผ่าน Cloudflare เท่านั้น ถ้าปิด Proxy ผู้ใช้จะเห็นคำเตือนใบรับรองไม่ถูกต้อง