HTTPS และ SSL คืออะไร? เว็บไซต์ปลอดภัยทำงานอย่างไร อธิบายแบบเข้าใจง่าย
HTTPS คือเวอร์ชันที่ปลอดภัยของ HTTP ซึ่งเป็นโปรโตคอลที่เบราว์เซอร์ใช้คุยกับเว็บไซต์ มันห่อทุกคำขอและการตอบกลับด้วยการเชื่อมต่อที่เข้ารหัสโดยใช้ TLS (Transport Layer Security) ทำให้ไม่มีใครระหว่างผู้เข้าชมกับเว็บไซต์อ่านหรือดัดแปลงสิ่งที่ส่งได้ SSL คือชื่อเก่าของแนวคิดเดียวกัน ซึ่งเป็นโปรโตคอลดั้งเดิมที่ TLS เข้ามาแทนที่ นั่นคือเหตุผลที่คนยังพูดว่า “ใบรับรอง SSL”
ทำไม HTTPS จึงสำคัญเมื่อสร้างแอปด้วย AI
แอปทุกตัวที่คุณเผยแพร่ควรให้บริการผ่าน HTTPS ซึ่งไม่ได้เป็นแค่แนวปฏิบัติที่ดี:
- เบราว์เซอร์คาดหวังสิ่งนี้ เว็บที่ใช้ HTTP ธรรมดาจะถูกติดป้าย “Not secure” และฟีเจอร์บางอย่างของเบราว์เซอร์ เช่น การเข้าถึงตำแหน่ง กล้องและไมโครโฟน และ service worker สำหรับแอปที่ใช้งานออฟไลน์ มักใช้ได้เฉพาะในหน้า HTTPS เท่านั้น
- การล็อกอินและฟอร์ม หากไม่มี HTTPS รหัสผ่าน คุกกี้เซสชัน และข้อมูลฟอร์มจะเดินทางในรูปข้อความที่อ่านได้ ใครก็ตามบน Wi-Fi ของร้านกาแฟเดียวกันอาจดักจับได้
- การชำระเงินและบริการภายนอก ผู้ให้บริการชำระเงิน การล็อกอินด้วย OAuth และ API จำนวนมากต้องการ URL สำหรับ redirect และ callback เป็น HTTPS
- ความเชื่อมั่นและการค้นหา ผู้เข้าชมสังเกตเห็นคำเตือน และ Google ระบุว่าใช้ HTTPS เป็นสัญญาณหนึ่งในการจัดอันดับ
ข่าวดีคือ ในแพลตฟอร์มโฮสติ้งสมัยใหม่ส่วนใหญ่ HTTPS ถูกตั้งค่าให้โดยอัตโนมัติ สิ่งที่คุณต้องเข้าใจคือส่วนประกอบต่าง ๆ มากพอที่จะแก้ไขเมื่อโดเมนที่กำหนดเองหรือคำเตือน mixed content มีปัญหา
เปรียบเทียบแบบในชีวิตประจำวัน
การส่งข้อมูลผ่าน HTTP ธรรมดาเหมือนการส่งไปรษณียบัตร ทุกคนที่จัดการมันอ่านได้ และอาจเปลี่ยนข้อความได้ด้วย
HTTPS เหมือนการส่งซองจดหมายที่ปิดผนึกและเปิดแล้วรู้ได้ และก่อนส่งก็ตรวจบัตรประจำตัวทางการของผู้รับ ใบรับรอง คือบัตรประจำตัวนั้น ซึ่งออกโดยหน่วยงานที่เชื่อถือได้ (certificate authority) ที่ตรวจแล้วว่าเว็บไซต์ควบคุมโดเมนนั้นจริง การเข้ารหัส คือซองจดหมายที่ปิดผนึก บัตรยืนยันว่าคุณกำลังเขียนถึงที่อยู่ที่ถูกต้อง ส่วนซองทำให้เนื้อหาเป็นความลับ
HTTPS ทำงานอย่างไร แบบง่าย ๆ
เมื่อเบราว์เซอร์เปิด https://shop.example.com:
- ทักทาย เบราว์เซอร์เชื่อมต่อและบอกว่ารองรับวิธีการเข้ารหัสใดบ้าง
- ใบรับรอง เซิร์ฟเวอร์ส่งใบรับรองซึ่งระบุว่า “คีย์นี้เป็นของ
shop.example.com” และลงนามโดยหน่วยงานออกใบรับรอง - ตรวจสอบ เบราว์เซอร์ตรวจลายเซ็นกับหน่วยงานที่ตัวเองเชื่อถืออยู่แล้ว ตรวจว่าใบรับรองยังไม่หมดอายุ และตรวจว่าโดเมนตรงกัน
- กุญแจ เบราว์เซอร์และเซิร์ฟเวอร์ตกลงกันเรื่องกุญแจลับใหม่สำหรับเซสชันนี้ โดยไม่ต้องส่งกุญแจนั้นให้เห็นกลางทาง
- การสนทนาแบบเข้ารหัส คำขอและการตอบกลับทั้งหมด ไม่ว่าจะเป็นหน้าเว็บ ข้อมูลฟอร์ม หรือคุกกี้ ตอนนี้เดินทางแบบเข้ารหัส
การจับมือ TLS นี้ใช้เวลาไม่กี่มิลลิวินาทีและเกิดขึ้นโดยอัตโนมัติ ผู้เข้าชมจะเห็นแค่ไอคอนกุญแจ (หรือไอคอนข้อมูลเว็บไซต์แบบเป็นกลางในบางเบราว์เซอร์)
HTTPS ป้องกันอะไรได้บ้างและไม่ได้บ้าง
| ป้องกัน | ไม่ได้ป้องกัน |
|---|---|
| ข้อมูลที่เดินทางระหว่างเบราว์เซอร์กับเซิร์ฟเวอร์ | ข้อมูลเมื่ออยู่ในเซิร์ฟเวอร์หรือฐานข้อมูลของคุณแล้ว |
| การแอบดูบน Wi-Fi สาธารณะ | เว็บไซต์ที่เป็นอันตรายหรือหลอกลวง |
| การที่ใครบางคนดัดแปลงหน้าเว็บระหว่างทาง | บั๊กในแอปของคุณ เช่น การไม่ตรวจสิทธิ์การเข้าถึง |
| คุกกี้และรหัสผ่านขณะถูกส่ง | รหัสผ่านที่อ่อนแอหรือ API key ที่รั่วไหล |
HTTPS เข้ารหัส เนื้อหา ของคำขอ รวมถึงเส้นทางของหน้าและ query string แต่ชื่อโดเมนที่คุณเข้ามักยังมองเห็นได้สำหรับเครือข่ายที่ผ่านทาง นี่คือเหตุผลหนึ่งที่ไม่ควรใส่ข้อมูลส่วนตัวใน URL เพราะมันจะไปปรากฏในบันทึกและประวัติเบราว์เซอร์อยู่ดี
ตัวอย่างการทำงาน: เชื่อมต่อโดเมนที่กำหนดเอง
สมมติคุณเผยแพร่แอปจองคิวและต้องการให้อยู่ที่ book.myyogastudio.com:
- คุณเพิ่มระเบียน DNS ที่ชี้
book.myyogastudio.comไปยังโฮสต์ของคุณ ดู โดเมนและ DNS ทำงานอย่างไร - โฮสต์พิสูจน์กับหน่วยงานออกใบรับรองว่าควบคุมชื่อนั้นอยู่ โดยปกติคือตอบกลับ challenge บนโดเมนนั้น แล้วได้รับใบรับรอง
- โฮสต์ติดตั้งและต่ออายุให้อัตโนมัติก่อนหมดอายุ ใบรับรองถูกออกแบบให้มีอายุสั้นโดยตั้งใจ การต่ออายุอัตโนมัติจึงสำคัญ
- ผู้เข้าชม
http://book.myyogastudio.comจะถูก redirect ไปยังhttps://
ถ้าขั้นตอนที่ 1 ผิด เช่น ระเบียนชี้ไปที่อื่น หรือมีพร็อกซีอยู่ตรงกลาง ขั้นตอนที่ 2 จะล้มเหลว และผู้เข้าชมจะเห็นข้อผิดพลาดของใบรับรอง นี่คือปัญหา HTTPS ที่พบบ่อยที่สุดเมื่อเชื่อมต่อโดเมนที่กำหนดเอง
คำศัพท์สำคัญ
| คำศัพท์ | ความหมาย |
|---|---|
| TLS | Transport Layer Security โปรโตคอลการเข้ารหัสเบื้องหลัง HTTPS |
| SSL | Secure Sockets Layer รุ่นเก่าที่ TLS สืบทอดมา ชื่อยังคงใช้กันอยู่ |
| ใบรับรอง (Certificate) | ไฟล์ที่ลงนามแล้วซึ่งเชื่อมโดเมนเข้ากับ public key |
| หน่วยงานออกใบรับรอง (CA) | องค์กรที่เบราว์เซอร์เชื่อถือให้ออกใบรับรอง เช่น Let’s Encrypt |
| Domain validation (DV) | ใบรับรองที่พิสูจน์การควบคุมโดเมน ซึ่งเว็บส่วนใหญ่ใช้ |
| Wildcard certificate | ครอบคลุมทุก subdomain หนึ่งระดับ เช่น *.example.com |
| Mixed content | หน้า HTTPS ที่โหลดทรัพยากรบางส่วนผ่าน HTTP ธรรมดา เบราว์เซอร์จะบล็อกหรือเตือน |
| HSTS | header ที่บอกเบราว์เซอร์ให้ใช้ HTTPS กับเว็บของคุณเสมอตั้งแต่นั้นเป็นต้นไป |
| Port 443 | พอร์ตมาตรฐานของ HTTPS (HTTP ใช้พอร์ต 80) |
ความเข้าใจผิดที่พบบ่อย
- “กุญแจหมายความว่าเว็บไซต์น่าเชื่อถือ” มันหมายความว่าการเชื่อมต่อเป็นส่วนตัวและโดเมนตรงกัน มิจฉาชีพก็ขอใบรับรองได้
- “HTTPS จำเป็นแค่กับหน้าชำระเงิน” หน้าใดก็ตามที่มีการล็อกอิน ฟอร์ม หรือคุกกี้ต้องใช้ HTTPS ซึ่งเกือบทุกแอปเป็นแบบนั้น ใช้ทุกที่เลย
- “ใบรับรองราคาแพง” ใบรับรองที่เชื่อถือได้และฟรีเป็นมาตรฐาน และโฮสต์ส่วนใหญ่จัดการให้คุณ
- “HTTPS ทำให้แอปของฉันปลอดภัย” มันปกป้องการเชื่อมต่อ แอปของคุณยังต้องตรวจสิทธิ์ฝั่งเซิร์ฟเวอร์ จัดการ secret อย่างปลอดภัย และตรวจสอบข้อมูลที่รับเข้า ดูเช็กลิสต์ความปลอดภัยสำหรับแอปที่สร้างด้วย AI
- “HTTPS ทำให้เว็บช้า” TLS สมัยใหม่เพิ่มภาระน้อยมาก และฟีเจอร์เช่น HTTP/2 ที่ทำให้เว็บเร็วขึ้นโดยทั่วไปต้องใช้ HTTPS ในเบราว์เซอร์
แก้ปัญหา HTTPS ที่พบบ่อย
| อาการ | สาเหตุที่เป็นไปได้ |
|---|---|
| “การเชื่อมต่อของคุณไม่เป็นส่วนตัว” | ใบรับรองไม่ครอบคลุมโดเมนนี้พอดี หมดอายุ หรือยังไม่ได้ออก |
ใช้ได้กับ www. แต่ไม่ได้กับโดเมนเปล่า (หรือกลับกัน) | มีเพียงชื่อเดียวที่มี DNS และใบรับรอง |
| ไม่มีกุญแจ หรือขึ้น “Not secure” บางหน้า | Mixed content: รูปภาพ สคริปต์ หรือฟอนต์โหลดผ่าน http:// |
| ข้อผิดพลาดของใบรับรองหลังเชื่อมต่อโดเมนทันที | DNS ยังกระจายไม่เสร็จ หรือมีพร็อกซีอยู่ข้างหน้าที่บล็อกการตรวจใบรับรอง |
สิ่งที่ควรขอจากเครื่องมือสร้างแอป AI ของคุณ
- “ตรวจให้แน่ใจว่ารูปภาพ สคริปต์ และฟอนต์ทุกตัวโหลดผ่าน HTTPS หรือใช้ URL แบบสัมพัทธ์ ห้ามมีลิงก์
http://” - “redirect ทราฟฟิก HTTP ทั้งหมดไปยัง HTTPS”
- “ตั้งค่าคุกกี้เซสชันด้วยแฟล็ก
SecureและHttpOnly” - “ใช้
https://สำหรับทุก URL callback ของ OAuth การชำระเงิน และ webhook” - “โดเมนที่กำหนดเองของฉันขึ้นข้อผิดพลาดใบรับรอง ผู้ให้บริการคาดหวังระเบียน DNS แบบไหน”
HTTPS ใน Mythex
เมื่อคุณเชื่อมต่อโดเมนที่กำหนดเองบน Mythex (ฟีเจอร์ของแพ็กเกจ Pro) คุณเพิ่มระเบียน CNAME ที่ชี้ไปยังเป้าหมาย slug.mythex.ai ที่ Mythex แสดงให้ จากนั้นคลิก Verify และ Mythex จะออก HTTPS ให้โดเมนนั้นโดยอัตโนมัติ เอกสารครอบคลุมปัญหาที่พบบ่อยสองข้อ ถ้า DNS ของคุณอยู่บน Cloudflare ให้ตั้งระเบียนเป็น “DNS only” (เมฆสีเทา) แทนการ proxy เพื่อให้ Mythex ออกใบรับรองได้ และ DNS อาจยืนยันก่อนที่ HTTPS จะตั้งค่าเสร็จสมบูรณ์ จึงให้รอสักสองสามนาทีแล้วกด verify อีกครั้ง ดูโดเมนที่กำหนดเองในเอกสาร และคู่มือของเราเรื่องการเชื่อมต่อโดเมนที่กำหนดเอง
คำถาม
HTTP กับ HTTPS ต่างกันอย่างไร?
HTTP ส่งข้อมูลระหว่างเบราว์เซอร์กับเว็บไซต์เป็นข้อความที่อ่านได้ ส่วน HTTPS คือ HTTP ที่ส่งผ่านการเชื่อมต่อ TLS ที่เข้ารหัส ทำให้คนในเครือข่ายเดียวกันหรือตามเส้นทางการส่งอ่านหรือแก้ไขข้อมูลที่ส่งไม่ได้ และเบราว์เซอร์ตรวจสอบได้ว่ากำลังคุยกับเว็บไซต์จริง
SSL กับ TLS เป็นสิ่งเดียวกันไหม?
TLS คือรุ่นถัดมาที่ใช้แทน SSL SSL ทุกเวอร์ชันล้าสมัยและไม่ปลอดภัยแล้ว เว็บไซต์ที่ปลอดภัยในปัจจุบันใช้ TLS คนยังพูดว่า “ใบรับรอง SSL” ตามความเคยชิน แต่ใบรับรองเหล่านั้นใช้งานร่วมกับ TLS
กุญแจสีเขียวหมายความว่าเว็บไซต์ปลอดภัยหรือไม่?
ไม่ใช่ กุญแจหมายความว่าการเชื่อมต่อถูกเข้ารหัสและใบรับรองตรงกับโดเมน เว็บหลอกลวงก็มีใบรับรองที่ถูกต้องได้เช่นกัน มันบอกคุณว่าไม่มีใครแอบดูการเชื่อมต่อได้ แต่ไม่ได้บอกว่าเจ้าของเว็บไซต์น่าเชื่อถือ
ต้องจ่ายเงินซื้อใบรับรอง SSL ไหม?
โดยทั่วไปไม่ต้อง หน่วยงานออกใบรับรองอัตโนมัติและฟรี เช่น Let’s Encrypt ออกใบรับรองที่เบราว์เซอร์เชื่อถือได้ และโฮสติ้งส่วนใหญ่จะขอและต่ออายุให้คุณ ใบรับรองแบบจ่ายเงินส่วนใหญ่เพิ่มการสนับสนุนหรือการตรวจสอบตัวตนพิเศษ
ทำไมเว็บของฉันขึ้นว่า Not Secure?
สาเหตุที่พบบ่อยคือเปิดเว็บด้วย http:// แทนที่จะเป็น https:// ใบรับรองหมดอายุหรือไม่ครอบคลุมโดเมนนั้นพอดี หรือหน้าเว็บโหลดรูปภาพหรือสคริปต์ผ่าน http:// ธรรมดา (mixed content)