ติดตั้ง SSL ฟรี (Let’s Encrypt) + บังคับ HTTPS ให้เว็บ
เว็บของคุณยังขึ้น “ไม่ปลอดภัย” อยู่ไหม? ถ้าใช่ คุณกำลังเสียลูกค้าแบบไม่รู้ตัว เพราะเบราว์เซอร์สมัยนี้จะเตือนผู้ใช้ทันทีที่เว็บไม่มี ssl ฟรี หรือใบรับรองความปลอดภัย
บทความนี้จะพาไปตั้งแต่ SSL คืออะไร วิธีติดตั้ง Let’s Encrypt ทั้ง 3 แบบที่คนใช้จริง แล้วปิดท้ายด้วยวิธีบังคับ redirect ไป HTTPS และตั้ง auto-renew ให้ไม่ต้องกลัวใบรับรองหมดอายุ
ปัญหาที่คนมักเจอ
หลายคนคิดว่า SSL ต้องซื้อและราคาแพง แต่จริง ๆ แล้ว Let’s Encrypt ออกใบรับรองฟรีให้ใช้ได้ไม่จำกัด ต่อให้เว็บคุณมี 20 โดเมนก็ทำได้หมด
ปัญหาจริงที่เจอบ่อยคือ “ติดตั้งไม่เป็น” หรือ “ติดตั้งแล้ว redirect ไม่ทำงาน” หรือที่แย่สุดคือตั้งแล้วลืม ปล่อยให้ใบรับรองหมดอายุ แล้วเว็บกลายเป็นขึ้นคำเตือนทั้งเว็บ
ในบทความนี้เราจะแก้ทั้งสามปัญหานี้แบบจบในที่เดียว
SSL คืออะไร และทำไมต้องมี
SSL (เวลาใช้งานจริงคือ TLS) คือระบบเข้ารหัสที่ทำให้ข้อมูลระหว่างเบราว์เซอร์กับเซิร์ฟเวอร์ถูกอ่านได้เฉพาะสองฝั่ง ถ้าไม่มี SSL ข้อมูลที่ส่งไปมา — รหัสผ่าน บัตรเครดิต ที่อยู่ — จะเป็นข้อความธรรมดาที่คนกลางดักอ่านได้
เหตุผลที่ต้องมี มีอยู่ 4 ข้อหลัก:
- ความปลอดภัยจริง — ป้องกันการดักฟังบน Wi-Fi สาธารณะหรือเครือข่ายที่ไม่น่าไว้ใจ
- ความน่าเชื่อถือ — เบราว์เซอร์แสดงรูปกุญแจและคำว่า “ปลอดภัย” ผู้ใช้กล้ากรอกข้อมูล
- SEO — Google ยืนยันชัดว่า HTTPS เป็นปัจจัยจัดอันดับ
- ข้อกำหนดทางธุรกิจ — Payment Gateway และระบบรับชำระเงินส่วนใหญ่บังคับว่าต้องมี HTTPS
HTTP vs HTTPS ต่างกันตรงไหน
| หัวข้อ | HTTP | HTTPS |
|---|---|---|
| การเข้ารหัส | ไม่มี ข้อความอ่านได้ | เข้ารหัสทั้งหมด |
| พอร์ต | 80 | 443 |
| เบราว์เซอร์แสดง | “ไม่ปลอดภัย” | รูปกุญแจ |
| SEO | เสียเปรียบ | ได้แต้ม |
| ใช้กับ e-commerce | ไม่ควรอย่างยิ่ง | จำเป็น |
| ค่าใช้จ่าย | ฟรี | ฟรี (Let’s Encrypt) |
จะเห็นว่าการมี SSL ไม่ได้มีข้อเสียเลย นอกจากต้องตั้งค่าให้ถูก
วิธีติดตั้ง Let’s Encrypt 3 วิธี
วิธีที่ 1 — ใช้ Certbot (สำหรับคนมี VPS หรือ SSH)
นี่คือวิธีที่ยืดหยุ่นที่สุด เหมาะกับคนที่ดูแลเซิร์ฟเวอร์เอง
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
Certbot จะแก้ config ของ Nginx ให้อัตโนมัติ รวมถึงตั้ง redirect HTTPS ให้เลย ในหน้าเว็บที่เกิดขึ้นจะถามอีเมลและให้เลือกว่าจะ redirect หรือไม่ — ตอบ 2 เพื่อ redirect ทั้งหมด
ถ้าใช้ Apache ให้เปลี่ยนเป็น python3-certbot-apache และรัน sudo certbot --apache
ถ้าเว็บอยู่หลัง reverse proxy หรือใช้ Docker ให้ใช้โหมด webroot แทน
sudo certbot certonly --webroot -w /var/www/html -d example.com
วิธีที่ 2 — ผ่าน Control Panel
ถ้าใช้ cPanel หลายเจ้ามีปลั๊กอิน Let’s Encrypt ให้กดปุ่มเดียวจบ:
ถ้าโฮสต์ของคุณไม่มีเมนูนี้ ควรพิจารณาย้ายไปแพ็กเกจที่รองรับ SSL อัตโนมัติ เช่นที่ https://www.skyfast.co.th/
- เข้า cPanel > หัวข้อ Security > SSL/TLS Status
- ติ๊กเลือกโดเมนที่ต้องการ
- กด Run AutoSSL แล้วรอ 2–5 นาที
- ระบบจะต่ออายุให้อัตโนมัติทุก 90 วัน
DirectAdmin และ aaPanel ก็มีเมนูทำนองเดียวกัน ชื่ออาจต่างกันเล็กน้อย
วิธีที่ 3 — ผ่าน Cloudflare
ถ้าใช้ Cloudflare เป็น DNS หรือ proxy อยู่แล้ว คุณจะได้ SSL ฟรีจาก Cloudflare ทันที
- เพิ่มโดเมนเข้า Cloudflare แล้วชี้ nameserver
- ไปที่ SSL/TLS > Overview เลือกโหมด Full (Strict) ถ้าเซิร์ฟเวอร์มีใบรับรองอยู่แล้ว หรือ Flexible ถ้ายังไม่มี
- เปิด Always Use HTTPS ในแท็บ Edge Certificates
ข้อควรระวัง: โหมด Flexible จะเข้ารหัสแค่ระหว่างผู้ใช้กับ Cloudflare แต่ช่วง Cloudflare ไปเซิร์ฟเวอร์ยังเป็น HTTP ทำให้เกิด loop ได้ง่าย ทางที่ดีควรติดตั้งใบรับรองที่เซิร์ฟเวอร์ด้วยแล้วใช้ Full (Strict) — ใครอยากเข้าใจ Cloudflare ลึกขึ้นอ่านบทความ Cloudflare ฟรี vs Pro ในชุดนี้ได้
บังคับ redirect ให้ทุกคนเข้า HTTPS
ต่อให้ติดตั้ง SSL แล้ว ถ้าผู้ใช้พิมพ์ http:// เข้ามาก็ยังเข้าแบบไม่เข้ารหัสได้ ต้องบังคับ redirect
สำหรับ Nginx เพิ่มใน server block ที่ฟังพอร์ต 80:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
สำหรับ Apache เพิ่มใน .htaccess หรือ virtual host:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
จุดที่คนมักพลาดคือหลัง redirect แล้วมีที่อยู่ในหน้าเว็บเป็น http:// ฝังอยู่ ต้องแก้ให้เป็น https:// ด้วย ไม่งั้นเบราว์เซอร์จะเตือน Mixed Content
ตั้ง auto-renew ให้ไม่ต้องกลัวหมดอายุ
ใบรับรอง Let’s Encrypt อายุแค่ 90 วัน จงใจออกแบบแบบนี้เพื่อให้ระบบอัตโนมัติดี ๆ ทำงาน
ตรวจสอบว่ามี timer อยู่จริง
systemctl list-timers | grep certbot
sudo certbot renew --dry-run
ถ้าไม่มี timer ให้ตั้ง cron เอง โดยรันวันละ 2 ครั้ง
0 0,12 * * * root certbot renew --quiet --deploy-hook "systemctl reload nginx"
Certbot จะต่ออายุเฉพาะใบที่เหลืออายุน้อยกว่า 30 วัน การรันบ่อยจึงไม่ทำให้เกิดปัญหา
ตรวจสอบว่า SSL ทำงานถูกต้อง
- เปิดเบราว์เซอร์แล้วดูรูปกุญแจ กดดูรายละเอียดว่าออกให้โดเมนถูกต้อง
- ใช้เครื่องมือออนไลน์อย่าง SSL Labs ทดสอบเกรด เป้าหมายคือ A ขึ้นไป
- เช็ควันหมดอายุด้วยคำสั่ง
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates - ทดสอบ http:// ว่ากระโดดไป https:// จริง
- กด Ctrl+Shift+I ดูแท็บ Console ว่ามีคำเตือน Mixed Content ไหม
FAQ
SSL ฟรีกับ SSL เสียเงินต่างกันยังไง?
ต่างที่ระดับความเชื่อมั่นและระยะเวลารับประกัน SSL ฟรีเข้ารหัสเหมือนกัน แต่ใบเสียเงินมักมีประกันเงินคืนถ้าถูกเจาะ และออกได้นานกว่า 1 ปี ใช้กับเว็บธุรกิจทั่วไป SSL ฟรีเพียงพอ
จำเป็นต้องติดตั้งที่ www และไม่มี www ทั้งคู่ไหม?
ควรมีทั้งคู่ หรืออย่างน้อยมี redirect จากแบบหนึ่งไปอีกแบบ เพื่อไม่ให้ Google มองเป็นสองเว็บที่ซ้ำกัน
ติดตั้งแล้วทำไมยังขึ้นไม่ปลอดภัย?
สาเหตุพบบ่อยคือ mixed content (มีรูปหรือสคริปต์เป็น http ฝังอยู่), ใบรับรองออกให้คนละชื่อโดเมน, หรือ cache ในเบราว์เซอร์เก่า ลองเคลียร์ cache หรือเปิดในโหมดไม่ระบุตัวตนก่อน
จะต่ออายุเองทุก 90 วันเลยได้ไหม?
ได้ แต่ไม่แนะนำ เพราะลืมง่ายมาก ให้ระบบทำอัตโนมัติแล้วแค่ตั้งเตือนในปฏิทินทุก 60 วันเพื่อเข้าไปตรวจ
ถ้าใช้ CDN พร้อม SSL เซิร์ฟเวอร์ยังต้องมีใบรับรองไหม?
ควรมี ถ้าตั้ง Full (Strict) ซึ่งเป็นโหมดที่ปลอดภัยที่สุด ถ้าไม่อยากมีก็ใช้ Flexible ได้แต่ไม่ปลอดภัยเต็มที่
สรุป
การติดตั้ง ssl ฟรี ด้วย Let’s Encrypt ใช้เวลาไม่ถึง 10 นาที และช่วยทั้งเรื่องความปลอดภัย ความน่าเชื่อถือ และ SEO อย่าลืมบังคับ redirect ไป HTTPS และตั้ง auto-renew ให้เรียบร้อย เพราะสองขั้นตอนหลังนี้คือจุดที่คนมักลืมและกลายเป็นปัญหาในอีก 3 เดือนถัดมา
ถ้ายังไม่สะดวกดูแลเอง หลายแพ็กเกจโฮสติ้งในท้องตลาดแถมการติดตั้ง SSL และต่ออายุอัตโนมัติให้อยู่แล้ว
จดโดเมน/เช่าโฮสติ้ง/VPS กับ Skyfast — https://www.skyfast.co.th/ โทร 095-441-3694