HTTPS ทำงานยังไง ทำไมต้องมี Security

HTTPS ทำงานยังไง ทำไมต้องมี

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

HTTPS คืออะไร ทำไมต้องมี?

น้องๆ เคยสงสัยไหมว่าทำไมเวลาเข้าเว็บธนาคาร หรือเว็บที่เราต้องใส่ข้อมูลส่วนตัวถึงมีรูปแม่กุญแจเขียวๆ ขึ้นที่ address bar? นั่นแหละคือ HTTPS หรือ Hypertext Transfer Protocol Secure มันคือเวอร์ชั่นที่ปลอดภัยกว่าของ HTTP ที่เราใช้กันทั่วไปนั่นเอง สมัยผมทำร้านเน็ตเมื่อ 20 กว่าปีที่แล้ว HTTPS ยังไม่แพร่หลายเท่าตอนนี้ แต่ปัจจุบันมันกลายเป็นมาตรฐานไปแล้ว เพราะมันช่วยปกป้องข้อมูลของเราจากการถูกดักจับ

คิดภาพตามนะ สมัยก่อนเวลาเราส่งข้อมูลผ่าน HTTP มันเหมือนเราส่งจดหมายเปล่าๆ ใครๆ ก็อ่านได้ แต่พอเป็น HTTPS มันเหมือนเราใส่จดหมายในซองล็อคอย่างดี ส่งไปถึงปลายทางได้อย่างปลอดภัย ไม่ต้องกลัวใครแอบอ่านระหว่างทาง

ทำไม HTTPS ถึงสำคัญ?

เรื่องนี้สำคัญมาก เพราะ HTTPS ช่วยป้องกันข้อมูลสำคัญของเราจากการถูกขโมย ไม่ว่าจะเป็น username, password, เลขบัตรเครดิต หรือข้อมูลส่วนตัวอื่นๆ สมัยก่อนเคยมีเคสที่ลูกค้าในร้านโดนแฮก account เพราะใช้ HTTP ในการ login พอมารู้ตัวอีกทีเงินในบัญชีหายไปแล้ว น่าเสียดายมากๆ

นอกจากนี้ HTTPS ยังช่วยยืนยันว่าเว็บที่เรากำลังเข้าเป็นเว็บจริง ไม่ใช่เว็บปลอมที่สร้างขึ้นมาเพื่อหลอกเอาข้อมูลของเรา (Phishing) เพราะ HTTPS ต้องมี Certificate ที่ออกโดยหน่วยงานที่เชื่อถือได้ ซึ่งเป็นการยืนยันตัวตนของเว็บไซต์

HTTPS ทำงานยังไง?

หลักการทำงานของ HTTPS คือการเข้ารหัส (Encryption) ข้อมูลที่ส่งระหว่าง browser ของเรากับ server ของเว็บไซต์ โดยใช้โปรโตคอลที่เรียกว่า Transport Layer Security (TLS) หรือ Secure Sockets Layer (SSL) ซึ่งเป็นรุ่นก่อนหน้า TLS

ขั้นตอนการทำงานคร่าวๆ มีดังนี้:

  1. Browser ส่ง request ไปยัง server ของเว็บไซต์
  2. Server ส่ง Certificate กลับมาให้ browser
  3. Browser ตรวจสอบ Certificate ว่าน่าเชื่อถือหรือไม่
  4. Browser สร้าง secret key ขึ้นมา แล้วเข้ารหัสด้วย public key ที่อยู่ใน Certificate
  5. Browser ส่ง encrypted secret key กลับไปให้ server
  6. Server ถอดรหัส secret key ด้วย private key ของตัวเอง
  7. Browser และ server ใช้ secret key ที่ได้ในการเข้ารหัสข้อมูลที่ส่งกันไปมา

ฟังดูอาจจะซับซ้อน แต่เบื้องหลังมันคือการใช้คณิตศาสตร์ที่ซับซ้อนในการเข้ารหัสและถอดรหัสข้อมูล ทำให้คนที่ไม่ได้รับอนุญาตไม่สามารถอ่านข้อมูลได้ ถึงแม้จะดักจับข้อมูลได้ก็ตาม

เปรียบเทียบ HTTP กับ HTTPS

คุณสมบัติ HTTP HTTPS
การเข้ารหัส ไม่มี มี (ใช้ TLS/SSL)
ความปลอดภัย ต่ำ สูง
Port 80 443
SEO ต่ำกว่า สูงกว่า (Google ให้ความสำคัญกับ HTTPS)
การยืนยันตัวตน ไม่มี มี (ใช้ Certificate)

จากตารางจะเห็นว่า HTTPS มีข้อดีกว่า HTTP ในทุกด้าน โดยเฉพาะเรื่องความปลอดภัย ซึ่งสำคัญมากๆ ในยุคที่ข้อมูลส่วนตัวมีค่าอย่างในปัจจุบัน

วิธีติดตั้ง HTTPS ให้เว็บไซต์

การติดตั้ง HTTPS ให้เว็บไซต์อาจจะดูยุ่งยาก แต่ปัจจุบันมีเครื่องมือและบริการที่ช่วยให้การติดตั้งง่ายขึ้นมาก สมัยก่อนต้องทำเองหมดทุกอย่าง ปวดหัวสุดๆ

1. เลือก Certificate Authority (CA)

CA คือหน่วยงานที่ออก Certificate ให้กับเว็บไซต์ เราต้องเลือก CA ที่น่าเชื่อถือและมี Certificate ที่เหมาะสมกับเว็บไซต์ของเรา เช่น Let's Encrypt (ฟรี), Comodo, DigiCert เป็นต้น สมัยนี้ Let's Encrypt เป็นที่นิยมเพราะฟรีและใช้งานง่าย

2. สร้าง Certificate Signing Request (CSR)

CSR คือไฟล์ที่ประกอบด้วยข้อมูลเกี่ยวกับเว็บไซต์ของเรา เช่น ชื่อโดเมน ชื่อองค์กร ที่อยู่ และ public key เราต้องสร้าง CSR บน server ของเรา แล้วส่งให้ CA เพื่อขอ Certificate

ตัวอย่างคำสั่งสร้าง CSR ด้วย OpenSSL:


openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr

หลังจากรันคำสั่งนี้ จะมีไฟล์ yourdomain.key (private key) และ yourdomain.csr (CSR) สร้างขึ้นมา เก็บ private key ไว้ให้ดี ห้ามให้ใครรู้เด็ดขาด

3. ขอ Certificate จาก CA

เมื่อได้ CSR แล้ว เราก็ส่งไปให้ CA ที่เราเลือกไว้ CA จะตรวจสอบข้อมูลใน CSR แล้วออก Certificate ให้เรา

4. ติดตั้ง Certificate บน Server

เมื่อได้ Certificate มาแล้ว เราต้องติดตั้ง Certificate บน server ของเรา โดยทั่วไปจะต้อง copy Certificate และ intermediate Certificate (ถ้ามี) ไปไว้ในตำแหน่งที่เหมาะสม แล้วแก้ไข configuration ของ web server (เช่น Apache, Nginx) ให้ชี้ไปยัง Certificate เหล่านั้น

ตัวอย่าง configuration ของ Apache:


<VirtualHost *:443>
    ServerName yourdomain.com
    DocumentRoot /var/www/yourdomain

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/yourdomain.crt
    SSLCertificateKeyFile /etc/ssl/private/yourdomain.key
    SSLCertificateChainFile /etc/ssl/certs/yourdomain_intermediate.crt

    <Directory /var/www/yourdomain>
        AllowOverride All
    </Directory>
</VirtualHost>

หลังจากแก้ไข configuration แล้ว อย่าลืม restart web server ด้วยนะ

5. Redirect HTTP ไป HTTPS

เพื่อให้แน่ใจว่าทุกคนเข้าเว็บไซต์ของเราผ่าน HTTPS เราควร redirect traffic จาก HTTP ไป HTTPS โดยอัตโนมัติ ทำได้โดยแก้ไข configuration ของ web server

ตัวอย่าง configuration ของ Apache:


<VirtualHost *:80>
    ServerName yourdomain.com
    Redirect permanent / https://yourdomain.com/
</VirtualHost>

เมื่อทำตามขั้นตอนเหล่านี้แล้ว เว็บไซต์ของเราก็จะรองรับ HTTPS อย่างเต็มรูปแบบ

ตรวจสอบ HTTPS Configuration

หลังจากติดตั้ง HTTPS แล้ว เราควรตรวจสอบให้แน่ใจว่าทุกอย่างทำงานได้อย่างถูกต้อง

ใช้ Online Tools

มี online tools มากมายที่ช่วยตรวจสอบ HTTPS configuration ของเว็บไซต์ของเรา เช่น SSL Labs SSL Server Test, Qualys SSL Labs เป็นต้น เครื่องมือเหล่านี้จะตรวจสอบ Certificate, Cipher Suites, Protocol Versions และอื่นๆ เพื่อหาช่องโหว่

ตรวจสอบด้วย Browser

เราสามารถตรวจสอบ HTTPS configuration ด้วย browser ของเราได้ โดยสังเกตที่ address bar ถ้ามีรูปแม่กุญแจสีเขียวแสดงว่า HTTPS ทำงานได้ถูกต้อง แต่ถ้ามีเครื่องหมายเตือนแสดงว่ามีปัญหา

ตรวจสอบ Mixed Content

Mixed content คือการที่เว็บไซต์ HTTPS โหลด resources (เช่น รูปภาพ, CSS, JavaScript) ผ่าน HTTP ซึ่งทำให้เกิดช่องโหว่ด้านความปลอดภัย เราควรตรวจสอบให้แน่ใจว่า resources ทั้งหมดโหลดผ่าน HTTPS เท่านั้น

ถ้าเจอ mixed content browser ส่วนใหญ่จะ block resources เหล่านั้น หรือแสดงเครื่องหมายเตือน

สมัยนี้เว็บที่ยังไม่เป็น HTTPS นี่ถือว่าเชยมากๆ แถม Google ยังลดอันดับ SEO อีกด้วย SiamCafe Blog เราก็เลยเน้นเรื่องนี้เป็นพิเศษ

🎬 วิดีโอแนะนำ

ดูวิดีโอเพิ่มเติมเกี่ยวกับHTTPS ทำงานยังไง ทำไมต้องมี:

FAQ เกี่ยวกับ HTTPS

HTTPS ทำให้เว็บไซต์ช้าลงจริงหรือ?

สมัยก่อน HTTPS อาจจะทำให้เว็บไซต์ช้าลงบ้าง แต่ปัจจุบันด้วยเทคโนโลยีที่พัฒนาขึ้น ความแตกต่างแทบไม่มีแล้ว แถม HTTPS ยังช่วยเพิ่มความน่าเชื่อถือของเว็บไซต์ ทำให้ผู้ใช้มั่นใจมากขึ้น

Certificate มีอายุเท่าไหร่?

Certificate ส่วนใหญ่มีอายุ 1-3 ปี เราต้อง renew Certificate ก่อนหมดอายุ มิฉะนั้น browser จะแสดงคำเตือนว่า Certificate ไม่ถูกต้อง

HTTPS ป้องกันการถูก DDoS ได้หรือไม่?

HTTPS ไม่ได้ป้องกันการถูก DDoS โดยตรง แต่ HTTPS ช่วยปกป้องข้อมูลของเราจากการถูกดักจับ ซึ่งเป็นสิ่งสำคัญในการป้องกันการโจมตีอื่นๆ เช่น การขโมย session cookie

ถ้าอยากรู้เรื่อง Security เพิ่มเติม ลองเข้าไปอ่านบทความใน SiamCafe Blog ได้นะ มีเรื่องน่าสนใจเยอะเลย

Best Practices

เลือก Certificate ที่เหมาะสม

สมัยผมทำร้านเน็ต เลือก SSL Certificate นี่ปวดหัวมาก! มีหลายแบบ Single Domain, Wildcard, Multi-Domain ต้องดูว่าเราจะใช้กับอะไรบ้าง ถ้ามีหลาย subdomain ก็เล่น Wildcard ไปเลย คุ้มกว่าเยอะ ไม่งั้นเดี๋ยวต้องมานั่ง generate CSR ใหม่เรื่อยๆ เสียเวลา

เดี๋ยวนี้มี Let's Encrypt ให้ใช้ฟรีด้วยนะ แต่ต้อง automate renew ให้ดีๆ ไม่งั้น certificate หมดอายุ ลูกค้าเข้าเว็บไม่ได้ โดนด่าแน่นอน

บังคับใช้ HTTPS อย่างเคร่งครัด

หลังจากติดตั้ง Certificate แล้ว ต้อง redirect ทุก traffic ที่เป็น HTTP ไป HTTPS ให้หมด ไม่งั้นคนก็ยังเข้าเว็บแบบไม่ secure ได้อยู่ดี สมัยก่อนผมใช้ .htaccess ทำ redirect แบบนี้


RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%$1 [R=301,L]

โค้ดนี้จะ redirect ทุกอย่างจาก HTTP ไป HTTPS แบบถาวร (301) อย่าลืม test ให้ดีก่อน deploy จริงนะ

ตรวจสอบ Cipher Suites อย่างสม่ำเสมอ

Cipher Suites คือชุด algorithm ที่ใช้ในการเข้ารหัสข้อมูล มันจะมีพวก algorithm ที่อ่อนแอ หรือเก่าแล้ว ที่ควรปิดการใช้งานไป เพื่อความปลอดภัยที่มากขึ้น เว็บสมัยใหม่ควร support TLS 1.2 เป็นอย่างน้อย และควรปิด TLS 1.0 กับ 1.1 ไปเลย

Nginx Config ตัวอย่าง:


ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

อันนี้แล้วแต่เซิร์ฟเวอร์ที่เราใช้ ต้องไปดูวิธีการตั้งค่าใน documentation ของแต่ละตัวอีกที

ใช้ Content Security Policy (CSP)

CSP เหมือนเป็นเกราะอีกชั้น ที่ช่วยป้องกันพวก XSS attack ได้ มันจะช่วยกำหนดว่า browser สามารถโหลด resources (เช่น รูป, script, stylesheet) จาก domain ไหนได้บ้าง ถ้ามี script แปลกปลอมพยายาม inject เข้ามา browser ก็จะ block ไว้


Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com;

ตัวอย่างนี้คือ อนุญาตให้โหลด script จาก domain ตัวเอง และจาก example.com เท่านั้น

FAQ คำถามที่พบบ่อย

HTTPS ช้ากว่า HTTP จริงหรือ?

สมัยก่อนอาจจะใช่ เพราะต้องเสียเวลาในการเข้ารหัส แต่ปัจจุบัน hardware แรงขึ้นเยอะ และ protocol ก็ optimize มากขึ้น ทำให้ความแตกต่างน้อยมาก จนแทบไม่รู้สึก ถ้า configuration ถูกต้องนะ

ถ้าเว็บช้า อาจจะเป็นเพราะสาเหตุอื่นมากกว่า เช่น รูปใหญ่เกินไป, script เยอะเกินไป, หรือ server ไม่แรงพอ

ทำไมต้อง renew SSL Certificate บ่อยๆ?

Certificate ส่วนใหญ่มีอายุแค่ 1-2 ปี เพื่อความปลอดภัย ถ้า certificate โดน compromise ไป hacker ก็จะมีเวลาจำกัดในการใช้งาน certificate นั้น

การ renew certificate บ่อยๆ ยังช่วยให้เรา update algorithm ที่ใช้ในการเข้ารหัสให้ทันสมัยอยู่เสมอด้วย

ถ้าใช้ Cloudflare จำเป็นต้องมี SSL Certificate ที่ Server ไหม?

จำเป็น! Cloudflare ช่วยป้องกันหน้าบ้าน แต่ข้อมูลระหว่าง Cloudflare กับ Server เราก็ยังต้องเข้ารหัสอยู่ดี ถ้าไม่มี SSL Certificate ที่ Server ข้อมูลก็จะถูกส่งแบบไม่เข้ารหัส และอาจถูกดักจับได้

Cloudflare มี option ให้ใช้ SSL/TLS แบบ "Flexible" ซึ่งจะเข้ารหัสแค่ระหว่าง browser กับ Cloudflare แต่ระหว่าง Cloudflare กับ Server จะไม่เข้ารหัส อันนี้ไม่แนะนำนะ ควรใช้แบบ "Full" หรือ "Full (strict)" จะปลอดภัยกว่า

HTTPS ช่วยป้องกันอะไรได้บ้าง?

HTTPS ช่วยป้องกันการดักจับข้อมูลระหว่างทาง (Man-in-the-middle attack) ทำให้ hacker ไม่สามารถอ่านข้อมูลที่เราส่งไปมากับ server ได้ เช่น username, password, credit card number

HTTPS ยังช่วยยืนยันว่าเรากำลังคุยกับ server ที่ถูกต้องจริงๆ ไม่ใช่ server ปลอมที่ hacker สร้างขึ้นมาหลอก

นอกจากนี้ HTTPS ยังช่วยเพิ่มความน่าเชื่อถือให้กับเว็บไซต์ของเราด้วย Google ก็ให้คะแนนเว็บไซต์ที่ใช้ HTTPS มากกว่า

สรุป

HTTPS ไม่ใช่แค่เรื่องของ security อย่างเดียว แต่เป็นเรื่องของความน่าเชื่อถือ และประสบการณ์ที่ดีของผู้ใช้งานด้วย สมัยผมทำร้านเน็ต การมี HTTPS ทำให้ลูกค้ามั่นใจที่จะใช้บริการของเรามากขึ้น

ถึงแม้การติดตั้งและดูแล HTTPS จะมีรายละเอียดเยอะ แต่ก็คุ้มค่าที่จะลงทุน เพราะมันช่วยปกป้องข้อมูลของลูกค้า และสร้างความเชื่อมั่นให้กับธุรกิจของเรา iCafeForex ก็ให้ความสำคัญกับเรื่องนี้มากๆ

หวังว่าบทความนี้จะเป็นประโยชน์กับทุกคนนะ ถ้ามีคำถามอะไรเพิ่มเติม ถามมาได้เลย หรือจะไปอ่านบทความอื่นๆ ใน SiamCafe Blog ก็ได้