- 5
- เมษายน
เว็บไซต์ขององค์กรคุณมี กุญแจล็อค (HTTPS) แล้ว แต่นั่นไม่ได้แปลว่าปลอดภัยเพียงพอ — SSL/TLS มีหลายระดับ ตั้งแต่ เกรด A+ ที่แทบจะเจาะไม่ได้ ไปจนถึง เกรด F ที่มีช่องโหว่ร้ายแรง บทความนี้จะสอนวิธี ตรวจสอบ SSL ของเว็บไซต์ด้วยตัวเอง ผ่านเครื่องมือฟรีที่มืออาชีพใช้ พร้อมอธิบายวิธีอ่านรายงานทุกส่วน ว่าแต่ละตัวเลขหมายถึงอะไร และต้องแก้ตรงไหนถ้าได้เกรดต่ำ
SSL/TLS คืออะไร? — ทบทวนสั้นๆ
SSL (Secure Sockets Layer) และ TLS (Transport Layer Security) คือโปรโตคอลเข้ารหัสข้อมูลระหว่างเว็บเบราว์เซอร์กับเซิร์ฟเวอร์ ทำให้ข้อมูลที่ส่งผ่าน (เช่น รหัสผ่าน เลขบัตรเครดิต ข้อมูลส่วนบุคคล) ไม่ถูกดักอ่านระหว่างทาง
SSL vs TLS — ต่างกันอย่างไร?
SSL เป็นเวอร์ชันเก่า (SSL 2.0, 3.0) ที่ มีช่องโหว่และไม่ควรใช้แล้ว ปัจจุบันใช้ TLS 1.2 และ TLS 1.3 แต่คนทั่วไปยังเรียกรวมว่า "SSL" ตามความเคยชิน ในบทความนี้ เมื่อพูดถึง "SSL" จะหมายถึง SSL/TLS รวมกัน
เว็บไซต์ที่ใช้ SSL จะแสดง https:// และ ไอคอนกุญแจ ในแถบ URL แต่ แค่มี HTTPS ไม่ได้หมายความว่าปลอดภัย — เพราะ SSL มีหลายระดับความแข็งแกร่ง ขึ้นอยู่กับ:
- ใบรับรอง (Certificate) ที่ใช้
- เวอร์ชัน TLS ที่รองรับ
- อัลกอริทึมเข้ารหัส (Cipher Suite) ที่เปิดใช้
- การตั้งค่าเซิร์ฟเวอร์
ทำไมต้องตรวจสอบ SSL?
| เหตุผล | รายละเอียด |
|---|---|
| ป้องกันข้อมูลรั่วไหล | SSL ที่อ่อนแออาจถูกโจมตีดักข้อมูลได้ แม้จะแสดง HTTPS |
| ข้อกำหนด พ.ร.บ. คุ้มครองข้อมูลส่วนบุคคล (PDPA) | องค์กรที่เก็บข้อมูลส่วนบุคคลต้องมีมาตรการรักษาความปลอดภัยที่เหมาะสม |
| SEO — Google จัดอันดับ | Google ใช้ HTTPS เป็นปัจจัยจัดอันดับ เว็บที่ SSL ไม่ดีอาจถูกลดอันดับ |
| ความน่าเชื่อถือ | เบราว์เซอร์สมัยใหม่แสดง "ไม่ปลอดภัย" ถ้า SSL มีปัญหา — ลูกค้าไม่กล้าใช้งาน |
| ใบรับรองหมดอายุ | SSL Certificate มีวันหมดอายุ (ปกติ 90 วัน - 1 ปี) ถ้าหมดแล้วไม่ต่อ เว็บจะแสดงหน้าเตือนสีแดง |
เครื่องมือตรวจสอบ SSL ฟรี
มีเครื่องมือหลายตัวที่ใช้ตรวจได้ แต่ตัวที่ มืออาชีพด้าน Security ใช้มากที่สุด คือ:
| เครื่องมือ | URL | จุดเด่น |
|---|---|---|
| Qualys SSL Labs | ssllabs.com/ssltest | มาตรฐานอุตสาหกรรม รายงานละเอียดที่สุด ให้เกรด A+ ถึง F |
| SSL Checker (sslshopper.com) | sslshopper.com/ssl-checker | ตรวจเร็ว ดูข้อมูลใบรับรอง Certificate Chain |
| SSL Server Test (immuniweb.com) | immuniweb.com/ssl | ตรวจ PCI DSS / HIPAA compliance ด้วย |
| testssl.sh (CLI) | testssl.sh | เครื่องมือ command-line สำหรับผู้ดูแลระบบ ตรวจได้ละเอียดที่สุด |
ในบทความนี้จะใช้ Qualys SSL Labs เป็นหลัก เพราะเป็นมาตรฐานที่ใช้กันทั่วโลก
วิธีตรวจสอบ SSL ด้วย Qualys SSL Labs — ทีละขั้น
ขั้นที่ 1: เปิดเว็บ SSL Labs
ไปที่ ssllabs.com/ssltest จะเห็นช่องกรอก Hostname
ขั้นที่ 2: กรอกชื่อเว็บไซต์
พิมพ์ชื่อเว็บไซต์ที่ต้องการตรวจ เช่น www.grandlinux.com (ไม่ต้องใส่ https://) แล้วกด Submit
ขั้นที่ 3: รอผลตรวจ
ระบบจะใช้เวลาประมาณ 1-3 นาที ในการตรวจสอบ โดยจะทดสอบหลายร้อยรายการ รวมถึง Protocol, Cipher Suite, ช่องโหว่ที่รู้จัก ฯลฯ
ขั้นที่ 4: ดูผลเกรด
ผลลัพธ์จะแสดงเป็น เกรดตัวอักษร พร้อมคะแนนรายส่วน:
อ่านรายงาน SSL Labs — แต่ละส่วนหมายถึงอะไร?
รายงานของ SSL Labs แบ่งเป็น 4 องค์ประกอบหลัก ที่รวมกันเป็นเกรดสุดท้าย:
1. Certificate (ใบรับรอง) — คะแนนเต็ม 100
ตรวจสอบว่าใบรับรอง SSL ถูกต้องหรือไม่:
| รายการตรวจ | ความหมาย | ถ้าไม่ผ่าน |
|---|---|---|
| Trusted | ใบรับรองออกโดย CA (Certificate Authority) ที่เบราว์เซอร์เชื่อถือ | เบราว์เซอร์แสดงหน้าเตือน "ไม่ปลอดภัย" |
| Not Expired | ใบรับรองยังไม่หมดอายุ | เว็บเข้าไม่ได้เลย — หน้าเตือนสีแดง |
| Correct Domain | ชื่อโดเมนตรงกับที่ระบุในใบรับรอง | เบราว์เซอร์เตือน "ชื่อไม่ตรง" |
| Chain Complete | ส่ง Intermediate Certificate ครบ | บางเบราว์เซอร์/มือถือเข้าไม่ได้ |
| Key Size | ขนาด Key (RSA 2048-bit ขึ้นไป หรือ ECDSA 256-bit) | Key สั้นเกินไป ถอดรหัสได้ |
2. Protocol Support (โปรโตคอลที่รองรับ) — คะแนนเต็ม 100
ตรวจว่าเซิร์ฟเวอร์รองรับ TLS เวอร์ชันไหนบ้าง:
| โปรโตคอล | สถานะ | ผลต่อเกรด |
|---|---|---|
| TLS 1.3 | ดีที่สุด — ควรเปิดใช้ | ช่วยให้ได้ A+ |
| TLS 1.2 | ปลอดภัย — ควรเปิดใช้ | มาตรฐานขั้นต่ำสำหรับ A |
| TLS 1.1 | ล้าสมัย — ควรปิด | ลดเกรดเหลือ B |
| TLS 1.0 | ล้าสมัย — ควรปิด | ลดเกรดเหลือ B |
| SSL 3.0 | อันตราย! — ต้องปิด | ลดเกรดเหลือ F ทันที (ช่องโหว่ POODLE) |
| SSL 2.0 | อันตรายมาก! — ต้องปิด | ลดเกรดเหลือ F ทันที |
เป้าหมาย: เปิดเฉพาะ TLS 1.2 + TLS 1.3 ปิด TLS 1.0, 1.1, SSL 2.0, 3.0 ทั้งหมด
3. Key Exchange (การแลกเปลี่ยนกุญแจ) — คะแนนเต็ม 100
ตรวจวิธีที่เซิร์ฟเวอร์แลกเปลี่ยนกุญแจเข้ารหัสกับเบราว์เซอร์:
- ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) — ดีที่สุด รองรับ Forward Secrecy
- DHE (Diffie-Hellman Ephemeral) — ดี แต่ต้องใช้ key size ใหญ่พอ (2048-bit ขึ้นไป)
- RSA Key Exchange — ล้าสมัย ไม่มี Forward Secrecy ถ้าเปิดอยู่จะลดคะแนน
Forward Secrecy คืออะไร?
คือคุณสมบัติที่ทำให้ แม้ Private Key ของเซิร์ฟเวอร์ถูกขโมยในอนาคต ข้อมูลที่เข้ารหัสไว้ก่อนหน้านี้ ยังถอดรหัสไม่ได้ เพราะทุก Session ใช้กุญแจชั่วคราว (Ephemeral Key) ที่ไม่ซ้ำกัน นี่คือเหตุผลที่ ECDHE ดีกว่า RSA
4. Cipher Strength (ความแข็งแกร่งของอัลกอริทึม) — คะแนนเต็ม 100
ตรวจว่าเซิร์ฟเวอร์ใช้ชุดเข้ารหัส (Cipher Suite) ที่แข็งแกร่งเพียงพอหรือไม่:
| Cipher Suite | สถานะ |
|---|---|
| AES-256-GCM, ChaCha20-Poly1305 | แข็งแกร่ง — ควรใช้ |
| AES-128-GCM | ปลอดภัย — ใช้ได้ |
| AES-CBC | ใช้ได้แต่มีความเสี่ยง (BEAST, Lucky 13) |
| 3DES, RC4, DES | อันตราย! ต้องปิด — ลดเกรดทันที |
ความหมายของเกรด A+ ถึง F
| เกรด | ความหมาย | สิ่งที่ต้องมี |
|---|---|---|
| A+ | ดีเยี่ยม — ระดับสูงสุด ตั้งค่าดีที่สุดเท่าที่จะเป็นไปได้ | ทุกอย่างผ่าน + มี HSTS (HTTP Strict Transport Security) |
| A | ดีมาก — ตั้งค่าถูกต้องครบ ไม่มีช่องโหว่ | TLS 1.2+ / Cipher แข็งแกร่ง / Certificate ถูกต้อง |
| B | พอใช้ — มีจุดอ่อนบางอย่างแต่ยังไม่ถึงขั้นอันตราย | อาจเปิด TLS 1.0/1.1 หรือมี Cipher อ่อนบางตัว |
| C | อ่อน — มีจุดอ่อนหลายจุด ควรแก้ไขเร็วที่สุด | ใช้ Cipher เก่า หรือ Key Size เล็กเกินไป |
| F | อันตราย! — มีช่องโหว่ร้ายแรง เสี่ยงถูกโจมตี | เปิด SSL 3.0 / ใช้ RC4 / มีช่องโหว่ POODLE, Heartbleed ฯลฯ |
| T | ใบรับรองไม่น่าเชื่อถือ (Trust Issue) | Certificate หมดอายุ / Self-signed / ชื่อโดเมนไม่ตรง |
ช่องโหว่ที่ SSL Labs ตรวจจับได้
นอกจากเกรดและคะแนนแล้ว SSL Labs ยังตรวจหา ช่องโหว่ที่รู้จัก (Known Vulnerabilities) ที่สำคัญ:
| ช่องโหว่ | ความร้ายแรง | อธิบายสั้นๆ |
|---|---|---|
| Heartbleed | วิกฤต | อ่านหน่วยความจำเซิร์ฟเวอร์ได้ (OpenSSL เก่า) — ต้อง patch ทันที |
| POODLE | สูง | โจมตี SSL 3.0 ได้ — แก้โดยปิด SSL 3.0 |
| BEAST | ปานกลาง | โจมตี CBC cipher ใน TLS 1.0 — แก้โดยใช้ TLS 1.2+ หรือ GCM cipher |
| FREAK | ปานกลาง | บังคับใช้ Export-grade cipher (อ่อนมาก) — ปิด export cipher |
| Logjam | ปานกลาง | โจมตี DHE ที่ใช้ key สั้น — ใช้ DHE 2048-bit ขึ้นไป หรือ ECDHE |
| ROBOT | สูง | โจมตี RSA key exchange — ปิด RSA key exchange ใช้ ECDHE แทน |
ถ้ารายงานแสดง Yes ที่ช่องโหว่ใดก็ตาม ถือว่า ต้องแก้ไขทันที
HSTS — กุญแจสู่เกรด A+
หลายเว็บไซต์ได้เกรด A แต่ไม่ถึง A+ เพราะขาด HSTS (HTTP Strict Transport Security)
HSTS คืออะไร?
HSTS คือ HTTP Header ที่บอกเบราว์เซอร์ว่า "เว็บนี้ต้องเข้าผ่าน HTTPS เท่านั้น ห้ามใช้ HTTP เด็ดขาด" แม้ผู้ใช้จะพิมพ์ http:// เบราว์เซอร์ก็จะบังคับเปลี่ยนเป็น https:// อัตโนมัติ
ตั้งค่าง่ายๆ ที่เซิร์ฟเวอร์ เช่น Nginx:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
ตัวอย่าง — อ่านรายงานจริงของ Saeree ERP
เว็บไซต์ www.grandlinux.com (Saeree ERP) ได้รับเกรด A+ จาก SSL Labs:
| องค์ประกอบ | คะแนน | รายละเอียด |
|---|---|---|
| Certificate | 100/100 | ใบรับรอง Let's Encrypt ถูกต้อง, Chain ครบ, RSA 2048-bit |
| Protocol Support | 100/100 | เปิดเฉพาะ TLS 1.2 + TLS 1.3 ปิด TLS 1.0/1.1 และ SSL ทั้งหมด |
| Key Exchange | 90/100 | ใช้ ECDHE (X25519) รองรับ Forward Secrecy ทุก Cipher |
| Cipher Strength | 90/100 | AES-256-GCM, ChaCha20-Poly1305, AES-128-GCM |
| เกรดรวม | A+ | HSTS เปิดใช้ / ไม่มีช่องโหว่ / Forward Secrecy ทุก Cipher |
ได้เกรดต่ำ ต้องแก้อย่างไร?
ตารางสรุปวิธีแก้ไขตามปัญหาที่พบบ่อย:
| ปัญหา | ผลต่อเกรด | วิธีแก้ (Nginx) |
|---|---|---|
| เปิด TLS 1.0/1.1 | ลดเป็น B | ssl_protocols TLSv1.2 TLSv1.3; |
| ใช้ Cipher อ่อน (RC4, 3DES) | ลดเป็น C หรือ F | ตั้ง ssl_ciphers ใช้เฉพาะ AESGCM, CHACHA20 |
| ไม่มี HSTS | ได้แค่ A (ไม่ถึง A+) | add_header Strict-Transport-Security "max-age=31536000"; |
| Certificate หมดอายุ | ลดเป็น T | ต่ออายุ Certificate (Let's Encrypt: certbot renew) |
| ไม่มี Forward Secrecy | ลดคะแนน Key Exchange | ใช้ ECDHE cipher / ตั้ง ssl_prefer_server_ciphers on; |
| Intermediate Cert ไม่ครบ | บาง device เข้าไม่ได้ | รวม Intermediate cert ใน ssl_certificate |
ตัวอย่างการตั้งค่า Nginx สำหรับเกรด A+
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
ควรตรวจบ่อยแค่ไหน?
- ทุกครั้งที่เปลี่ยนแปลง — อัปเดตเซิร์ฟเวอร์ ต่ออายุ Certificate เปลี่ยนค่า config
- อย่างน้อยไตรมาสละครั้ง — เพราะอาจมีช่องโหว่ใหม่ที่ SSL Labs อัปเดตตลอด
- หลังเกิดเหตุด้าน Security — เช่น มีช่องโหว่ใหม่ประกาศ (เหมือนตอน Heartbleed)
- ก่อนการตรวจสอบ Audit — ส่งรายงาน SSL Labs เป็นหลักฐานให้ผู้ตรวจสอบ
SSL ไม่ใช่สิ่งที่ตั้งค่าครั้งเดียวแล้วลืมได้ — เทคโนโลยีเปลี่ยน ช่องโหว่ใหม่ถูกค้นพบทุกปี สิ่งที่ได้เกรด A วันนี้ อาจได้แค่ B ในปีหน้า ถ้าไม่อัปเดตตาม
สรุป — Checklist ตรวจ SSL
| ลำดับ | รายการ | เป้าหมาย |
|---|---|---|
| 1 | ตรวจด้วย SSL Labs | เกรด A หรือ A+ |
| 2 | Certificate ถูกต้อง ไม่หมดอายุ Chain ครบ | 100/100 |
| 3 | เปิดเฉพาะ TLS 1.2 + TLS 1.3 | ปิด TLS 1.0/1.1 และ SSL ทั้งหมด |
| 4 | ใช้ Cipher แข็งแกร่ง (AESGCM, ChaCha20) | ปิด RC4, 3DES, DES |
| 5 | รองรับ Forward Secrecy (ECDHE) | ทุก Cipher Suite |
| 6 | เปิด HSTS | max-age อย่างน้อย 1 ปี |
| 7 | ไม่มีช่องโหว่ (Heartbleed, POODLE ฯลฯ) | ทุกรายการแสดง "No" |
แหล่งอ้างอิง
Saeree ERP ใช้การตั้งค่า SSL ระดับ A+ บนเซิร์ฟเวอร์ทุกตัว รองรับทั้ง การยืนยันตัวตนสองชั้น (2FA) และลายเซ็นดิจิทัล หากต้องการระบบ ERP ที่ให้ความสำคัญกับความปลอดภัยระดับสูง สามารถนัดหมาย Demo หรือติดต่อทีมที่ปรึกษาได้เลย
