วิธีเปิด HSTS บน IIS Windows Server 2022 ป้องกัน HTTPS Downgrade Attack และเพิ่มความปลอดภัยเว็บไซต์
แม้เว็บไซต์จะติดตั้ง SSL Certificate และบังคับ HTTPS เรียบร้อยแล้ว แต่ยังมีช่องโหว่ประเภทหนึ่งที่ผู้โจมตีสามารถใช้บังคับให้ผู้ใช้งานกลับไปเชื่อมต่อผ่าน HTTP ได้ ซึ่งเรียกว่า HTTPS Downgrade Attack หรือ SSL Stripping Attack
วิธีป้องกันที่ได้รับการยอมรับทั่วโลกคือการเปิดใช้งาน HSTS (HTTP Strict Transport Security) ซึ่งจะสั่งให้ Browser จดจำว่าเว็บไซต์นี้ต้องใช้งานผ่าน HTTPS เท่านั้น
ปัจจุบันเว็บไซต์ขนาดใหญ่ เช่น ธนาคาร, Cloud Provider, ระบบ E-Commerce และเว็บไซต์องค์กรระดับโลก ล้วนเปิดใช้งาน HSTS ทั้งหมด
บทความนี้จะอธิบายวิธีเปิด HSTS บน IIS Windows Server 2022 อย่างละเอียด พร้อมแนวทางใช้งานอย่างปลอดภัย
🔐 HSTS คืออะไร
HSTS ย่อมาจาก
HTTP Strict Transport Security
เป็น HTTP Header ที่ส่งจาก Web Server ไปยัง Browser เพื่อบังคับให้ใช้งาน HTTPS เท่านั้น
🚨 HSTS ป้องกันอะไรได้บ้าง
① 🔒 HTTPS Downgrade Attack
ป้องกันการบังคับให้ผู้ใช้งานกลับไปใช้ HTTP
② 🔒 SSL Stripping Attack
ป้องกันการดักแปลง HTTPS เป็น HTTP
③ 🔒 Man-in-the-Middle Attack
ลดความเสี่ยงจากการดักจับข้อมูลระหว่างทาง
④ 🔒 Human Error
ป้องกันผู้ใช้งานพิมพ์ URL แบบ HTTP เอง
🌐 ตัวอย่างก่อนเปิด HSTS
ผู้ใช้พิมพ์
http://example.com
Browser จะลองเชื่อมต่อ HTTP ก่อน
แล้วค่อย Redirect ไป HTTPS
ในช่วงนี้ยังมีความเสี่ยงด้าน Security
🌐 ตัวอย่างหลังเปิด HSTS
Browser จะเชื่อมต่อ
https://example.com
ทันที
โดยไม่ลองเชื่อมต่อ HTTP อีก
📋 สิ่งที่ต้องเตรียมก่อนเปิด HSTS
① SSL Certificate ทำงานปกติ
② HTTPS Binding ทำงานเรียบร้อย
③ Redirect HTTP → HTTPS แล้ว
④ ไม่มี Mixed Content
⑤ เว็บไซต์ทุกหน้ารองรับ HTTPS
หากยังไม่พร้อม ไม่ควรเปิด HSTS
🖥️ วิธีเปิด HSTS ผ่าน IIS Manager
เปิด
inetmgr
หรือ
IIS Manager
เลือกเว็บไซต์
เปิด
HTTP Response Headers
คลิก
Add...
① เพิ่ม Header ใหม่
Name
Strict-Transport-Security
Value
max-age=31536000
กด
OK
🔍 ค่า max-age คืออะไร
หน่วยเป็นวินาที
ตัวอย่าง
31536000
เท่ากับ
365 วัน
ตัวอย่าง
2592000
เท่ากับ
30 วัน
⚙️ วิธีเปิด HSTS ผ่าน web.config
เปิดไฟล์
web.config
เพิ่ม
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security"
value="max-age=31536000" />
</customHeaders>
</httpProtocol>
</system.webServer>
🌍 เปิด HSTS ให้ทุก Subdomain
หากต้องการครอบคลุม Subdomain ทั้งหมด
ใช้ค่า
max-age=31536000; includeSubDomains
ตัวอย่าง
example.com
api.example.com
mail.example.com
vpn.example.com
จะถูกบังคับ HTTPS ทั้งหมด
🚀 เปิด HSTS Preload
ระดับสูงสุด
max-age=31536000; includeSubDomains; preload
Browser จะจดจำเว็บไซต์ไว้ล่วงหน้า
แม้ผู้ใช้งานจะไม่เคยเข้าเว็บมาก่อน
⚠️ ข้อควรระวังก่อนเปิด HSTS
เมื่อ Browser จดจำ HSTS แล้ว
จะไม่สามารถเข้าเว็บไซต์ผ่าน HTTP ได้อีก
ดังนั้นต้องมั่นใจว่า
✅ SSL ถูกต้อง
✅ HTTPS ใช้งานได้ทุกหน้า
✅ Subdomain ทั้งหมดรองรับ HTTPS
🔍 วิธีตรวจสอบ HSTS
เปิดเว็บไซต์
https://example.com
กด
F12
เลือก
Network
ดู Response Header
ควรพบ
Strict-Transport-Security
⚡ ตรวจสอบผ่าน PowerShell
Invoke-WebRequest https://example.com
ตรวจสอบ Header ที่ตอบกลับ
❌ ปัญหาที่พบบ่อย
HSTS Header ไม่แสดง
ตรวจสอบว่า Apply แล้วหรือยัง
Header ซ้ำ
ตั้งค่าซ้ำทั้ง IIS และ web.config
Subdomain เข้าไม่ได้
แต่เปิด includeSubDomains
Browser ยังไม่เห็น HSTS
ล้าง Cache และเปิดใหม่
📋 HSTS Deployment Checklist
✅ SSL Certificate ถูกต้อง
✅ HTTPS Redirect ทำงาน
✅ ไม่มี Mixed Content
✅ ทุกหน้าใช้ HTTPS
✅ ทดสอบ Browser หลักครบ
✅ Backup Configuration แล้ว
🛡️ Best Practices
① เปิด HTTPS Redirect ก่อนเสมอ
② ใช้ TLS 1.2 หรือ TLS 1.3
③ เริ่มจาก max-age ระยะสั้น
เช่น
86400
(1 วัน)
④ ทดสอบก่อนเพิ่มเป็น 1 ปี
31536000
⑤ ใช้ includeSubDomains เมื่อมั่นใจแล้ว
⑥ ใช้ preload เฉพาะเว็บไซต์ที่พร้อมจริง
ทีมงาน comsiam มักเริ่มต้นด้วย HSTS ระยะเวลา 1 วันก่อน จากนั้นค่อยเพิ่มเป็น 30 วัน และ 365 วันเมื่อมั่นใจว่าระบบ HTTPS ทำงานได้สมบูรณ์ทุกส่วน เพื่อลดความเสี่ยงในการล็อกผู้ใช้งานออกจากเว็บไซต์โดยไม่ตั้งใจ
🎯 สรุป
HSTS เป็นกลไกความปลอดภัยที่ช่วยบังคับให้ Browser ใช้งาน HTTPS เท่านั้น ลดความเสี่ยงจาก HTTPS Downgrade Attack, SSL Stripping และการดักจับข้อมูลระหว่างทาง
สำหรับ IIS Windows Server 2022 การเปิด HSTS ทำได้ง่ายผ่าน HTTP Response Headers หรือ web.config แต่ควรตรวจสอบ SSL, HTTPS Redirect และ Subdomain ต่าง ๆ ให้พร้อมก่อนเปิดใช้งาน เพื่อให้เว็บไซต์มีความปลอดภัยตามมาตรฐานองค์กรระดับมืออาชีพและรองรับการใช้งานในระยะยาว