ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

Home เลือก SSL/TLS Mode บน Cloudflare ให้ถูกต้อง

เลือก SSL/TLS Mode บน 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

เปรียบเทียบแต่ละโหมด

โหมดผู้ใช้ถึง CloudflareCloudflare ถึง Originตรวจใบรับรอง Originคำแนะนำ
OffHTTPHTTPไม่ตรวจห้ามใช้กับเว็บจริง
FlexibleHTTPSHTTPไม่ตรวจใช้เฉพาะชั่วคราวเมื่อ Origin ยังไม่มี SSL เลย
FullHTTPSHTTPSไม่ตรวจความถูกต้อง รับใบ Self-signed หรือหมดอายุได้ดีกว่า Flexible แต่ยังโดนดักกลางทางได้
Full (strict)HTTPSHTTPSตรวจว่าใบยังไม่หมดอายุ ชื่อตรง และออกโดย 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

  1. ใน Cloudflare Dashboard เลือกโดเมน ไปที่ SSL/TLS แล้วเลือก Origin Server
  2. กด Create Certificate เลือกให้ Cloudflare สร้าง Private Key ใส่ชื่อ example.com และ *.example.com อายุใบค่าเริ่มต้นคือ 15 ปี
  3. คัดลอก Origin Certificate และ Private Key ไปติดตั้งบนเซิร์ฟเวอร์ Private Key จะแสดงครั้งเดียว ต้องเก็บทันที

ใบนี้เชื่อถือได้เฉพาะเมื่อผ่าน Cloudflare เท่านั้น ถ้าปิด Proxy ผู้ใช้จะเห็นคำเตือนใบรับรองไม่ถูกต้อง

ขั้นตอนที่ 3: เปลี่ยนโหมดเป็น Full (strict)

  1. ใน Cloudflare Dashboard เลือกโดเมน แล้วไปที่ SSL/TLS และ Overview
  2. กด Configure ที่หัวข้อ SSL/TLS encryption (หน้าจอรุ่นเก่าแสดงเป็นปุ่มเลือกโหมดทันที)
  3. หากเปิด Automatic SSL/TLS อยู่ Cloudflare จะเลือกโหมดให้เองตามผลตรวจ Origin ถ้าต้องการกำหนดเอง ให้เลือก Custom แล้วเลือก Full (strict)
  4. บันทึก การเปลี่ยนมีผลภายในไม่กี่วินาที

ขั้นตอนที่ 4: บังคับ HTTPS ที่ Cloudflare

ไปที่ SSL/TLS แล้วเลือก Edge Certificates เปิด Always Use HTTPS เมื่อใช้ Full (strict) แล้ว จะบังคับ Redirect ที่ Origin ด้วยก็ได้ ไม่เกิดวนซ้ำ ส่วน HSTS ให้เปิดหลังจากมั่นใจว่าทุก Subdomain ใช้ HTTPS ได้แล้วเท่านั้น เพราะเบราว์เซอร์จะจำค่าไว้และย้อนกลับยาก

ตรวจสอบผลลัพธ์

curl -sI http://example.com | head -n 3
curl -sI https://example.com | grep -iE "^HTTP|^server|cf-ray"

คำสั่งแรกควรได้ 301 ไปยัง https:// คำสั่งที่สองควรได้ HTTP/2 200 พร้อม server: cloudflare และบรรทัด cf-ray แปลว่าผ่าน Cloudflare และเชื่อม Origin สำเร็จ

ปัญหาที่พบบ่อย

ERR_TOO_MANY_REDIRECTS

เกิดจากใช้ Flexible ขณะที่ Origin บังคับ Redirect ไป HTTPS Cloudflare เชื่อม Origin ด้วย HTTP แล้ว Origin ตอบกลับให้ไป HTTPS วนซ้ำไม่จบ แก้โดยติดตั้งใบรับรองบน Origin แล้วเปลี่ยนเป็น Full (strict) ไม่ควรแก้ด้วยการปิด Redirect ที่ Origin

Error 525 SSL handshake failed

Cloudflare เชื่อม Origin ที่พอร์ต 443 ได้แต่ Handshake ไม่สำเร็จ มักเพราะไม่มีใบรับรองติดตั้งอยู่บน Virtual Host นั้น หรือพอร์ต 443 ไม่ได้เปิด ตรวจ Firewall ของเซิร์ฟเวอร์ และหากเซิร์ฟเวอร์มี Security Group หรือ Firewall ภายนอกจากฝั่งผู้ให้บริการ ให้เปิดพอร์ตนั้นเพิ่มด้วย

Error 526 Invalid SSL certificate

เกิดเฉพาะโหมด Full (strict) เมื่อใบรับรองบน Origin หมดอายุ ชื่อไม่ตรง หรือเป็น Self-signed ให้ต่ออายุหรือออกใบใหม่ตามขั้นตอนที่ 2 ดูวิธีเฝ้าวันหมดอายุได้ที่ ตรวจสอบวันหมดอายุ SSL Certificate

รูปหรือสคริปต์บางส่วนไม่โหลดหลังเปลี่ยนเป็น HTTPS

หน้าเว็บยังอ้างถึงไฟล์ด้วย http:// ดู แก้ปัญหา Mixed Content บน WordPress

หากทำตามขั้นตอนแล้วยังติดปัญหา สามารถติดต่อทีมงานซัพพอร์ตของ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/ โดยแจ้งชื่อโดเมน สิ่งที่ทำไปแล้ว และข้อความ Error ที่พบ เพื่อให้ทีมงานตรวจสอบได้รวดเร็วขึ้น

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security