Security
สมัยผมทำร้านเน็ต SiamCafe เนี่ย เรื่อง security นี่สำคัญสุดๆ ลูกค้ามาใช้บริการ ต้องมั่นใจว่าข้อมูลเค้าปลอดภัยนะ ยิ่งสมัยนี้ เว็บไซต์ไหนไม่มี HTTPS นี่คือจบเห่เลย Google เค้าไม่ปลื้ม แถม browser ก็เตือนพรึ่บพรั่บว่า "Not Secure" ใครจะกล้าใช้ล่ะ
แต่ก่อน SSL Certificate นี่แพงหูฉี่เลยนะ ต้องเสียเงินซื้อปีละหลายพัน แต่เดี๋ยวนี้มี Let's Encrypt มาช่วยชีวิตแล้ว ฟรี! แถมใช้งานง่ายด้วย เดี๋ยวผมจะเล่าให้ฟังว่ามันคืออะไร ทำไมถึงสำคัญ แล้วก็วิธีติดตั้งแบบ step-by-step ง่ายๆ เลย
Let's Encrypt เนี่ย มันคือ Certificate Authority (CA) ที่ออก SSL/TLS Certificate ให้เราฟรีๆ ครับ เป้าหมายของเค้าคือทำให้เว็บไซต์ทุกเว็บมี HTTPS ใช้กันหมด จะได้ปลอดภัยกันถ้วนหน้า
ทำไมต้องใช้ HTTPS? ง่ายๆ เลยคือ
สมัยก่อนตอนทำร้านเน็ตนี่ ผมต้องคอยสอนลูกค้าเรื่องความปลอดภัยตลอด HTTPS นี่แหละตัวสำคัญเลย ลูกค้าที่มาใช้บริการ SiamCafe Blog ส่วนใหญ่ก็ถามเรื่องนี้กันเยอะ
วิธีติดตั้ง Let's Encrypt เนี่ยมีหลายแบบ ขึ้นอยู่กับว่าเราใช้เว็บเซิร์ฟเวอร์อะไร แต่ที่ง่ายที่สุดคือใช้เครื่องมือที่ชื่อว่า Certbot ครับ
Certbot มันเป็นโปรแกรมที่จะช่วยเรา generate certificate แล้วก็ติดตั้งให้เองอัตโนมัติเลย รองรับ Apache, Nginx แล้วก็เว็บเซิร์ฟเวอร์อื่นๆ อีกเยอะ
อันนี้แล้วแต่ว่าเราใช้ OS อะไร ถ้าเป็น Ubuntu หรือ Debian ก็ใช้คำสั่งนี้เลย:
sudo apt update
sudo apt install certbot python3-certbot-apache
ถ้าเป็น CentOS หรือ RHEL ก็:
sudo yum install epel-release
sudo yum install certbot python3-certbot-apache
ถ้าใช้เว็บเซิร์ฟเวอร์อื่น (เช่น Nginx) ก็เปลี่ยน python3-certbot-apache เป็น python3-certbot-nginx แทน
หลังจากติดตั้ง Certbot เสร็จแล้ว ก็สั่งให้มันขอ certificate ให้เราได้เลย โดยใช้คำสั่ง:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
เปลี่ยน yourdomain.com เป็นชื่อ domain ของเรานะครับ ถ้ามี subdomain ก็ใส่เพิ่มเข้าไปได้เลย
Certbot มันจะถามอะไรนิดหน่อย ก็ตอบๆ ไปตามที่มันถามแหละ ส่วนใหญ่ก็แค่ให้เราใส่ email address กับ accept terms of service
Certbot มันจะถามเราว่าต้องการให้ redirect HTTP ไป HTTPS เลยไหม ถ้าตอบ Yes มันก็จะแก้ config ของ Apache ให้เองอัตโนมัติ แต่ถ้าตอบ No เราก็ต้องแก้เอง
ถ้าจะแก้เอง ก็เปิดไฟล์ .htaccess แล้วใส่ code นี้เข้าไป:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
แค่นี้แหละ เว็บไซต์ของเราก็จะ redirect ไป HTTPS เองอัตโนมัติ
Let's Encrypt Certificate มันมีอายุแค่ 90 วันนะ แต่ไม่ต้องกลัว Certbot มันมีระบบต่ออายุอัตโนมัติให้เราด้วย
แค่สั่งคำสั่งนี้:
sudo certbot renew --dry-run
ถ้าไม่มี error อะไร มันก็จะต่ออายุ certificate ให้เราเองอัตโนมัติ แล้วเราก็ตั้งให้มัน run เป็น cron job ทุกวันก็ได้ จะได้ไม่ต้องมานั่งต่อเอง
ทุกอย่างมันมีข้อดีข้อเสียแหละ Let's Encrypt ก็เหมือนกัน
| ข้อดี | ข้อเสีย |
|---|---|
| ฟรี! | อายุสั้น (90 วัน) ต้องต่ออายุบ่อยๆ |
| ใช้งานง่าย มี Certbot ช่วย | บางทีก็มีปัญหาเรื่อง compatibility กับบาง browser เก่าๆ |
| สนับสนุนโดยองค์กรใหญ่ๆ มั่นใจได้ | Certificate เป็นแบบ Domain Validation (DV) อย่างเดียว ไม่มี Organization Validation (OV) หรือ Extended Validation (EV) |
สมัยที่ผมทำ SiamCafe Blog ผมก็ใช้ Let's Encrypt นี่แหละ ประหยัดเงินไปได้เยอะเลย
Q: Let's Encrypt ปลอดภัยไหม?
A: ปลอดภัยครับ Let's Encrypt เป็น Certificate Authority ที่น่าเชื่อถือ มีมาตรฐานความปลอดภัยสูง
Q: Let's Encrypt ใช้ได้กับทุกเว็บไซต์ไหม?
A: เกือบทุกเว็บไซต์ครับ แต่ถ้าเว็บไซต์ของคุณต้องการ Certificate แบบ OV หรือ EV อาจจะต้องใช้ Certificate แบบเสียเงิน
Q: ถ้าต่ออายุ Certificate ไม่ทัน จะเกิดอะไรขึ้น?
A: Browser จะเตือนว่าเว็บไซต์ไม่ปลอดภัย คนจะไม่กล้าเข้าเว็บไซต์ของคุณ
เรื่องนี้สำคัญมาก! Let's Encrypt มีอายุแค่ 90 วันเองนะ ต้องคอย renew certificate เสมอ ไม่งั้นเว็บจะขึ้น Not Secure เล่นเอาลูกค้าหนีหมด สมัยผมทำร้านเน็ต เคยเจอเคสนี้ ลูกค้าโวยวายใหญ่เลย
แนะนำให้ตั้ง cron job หรือใช้ systemd timer ให้มัน renew certificate อัตโนมัติไปเลย สบายใจกว่าเยอะ
Cerbot นี่แหละตัวช่วยหลักเลย มันจัดการเรื่อง renew certificate ให้อัตโนมัติได้ ลองดูคำสั่งนี้
certbot renew --dry-run
--dry-run นี่สำคัญนะ เอาไว้ทดสอบก่อนว่ามันทำงานได้จริง ไม่ต้องกลัวว่า certificate จริงจะพัง
บางที browser มันอาจจะไม่รู้จัก root certificate ของ Let's Encrypt ต้องเช็ค certificate chain ให้ดี ไม่งั้น user อาจจะเจอปัญหา
เข้าไปเช็คที่ SSL Checker ได้เลย ใส่ domain name แล้วมันจะบอกหมดว่ามีปัญหาอะไร
อย่าไว้ใจระบบ auto-renew มากเกินไปนะ ต้อง monitor ระบบ certificate ด้วย เผื่อมันมีปัญหาอะไรจะได้แก้ทัน
ผมแนะนำให้ใช้พวก monitoring tools เช่น UptimeRobot หรือ Pingdom คอยเช็คว่าเว็บยังเข้าได้ปกติ และ certificate ยังไม่หมดอายุ
ดูวิดีโอเพิ่มเติมเกี่ยวกับSSL Certificate ฟรี Let's Encr:
ปลอดภัยแน่นอน! Let's Encrypt ออก certificate โดยใช้มาตรฐาน X.509 เหมือน CA อื่นๆ ทั่วไป แต่ที่สำคัญคือมันฟรีนี่แหละ iCafeForex ก็ใช้เหมือนกัน
ไม่ยากเลย ถ้าใช้ Certbot มันแทบจะอัตโนมัติหมด แค่รันคำสั่ง certbot renew ก็เรียบร้อย แต่ถ้าอยากให้ชัวร์ก็ตั้ง auto-renew ไปเลย
เกือบทุกเว็บแหละ แต่ต้องมี domain name ที่ถูกต้อง และ server ต้องเข้าถึงได้จาก internet นะ ถ้าเป็น localhost จะใช้ไม่ได้
Browser จะเตือนว่า "This site is not secure" หรือ "Your connection is not private" ลูกค้าจะตกใจและอาจจะไม่เข้าเว็บเราอีกเลย ต้องระวังให้ดี
Let's Encrypt เป็นทางเลือกที่ดีมากสำหรับคนที่อยากได้ SSL certificate ฟรี และใช้งานง่าย แต่ต้องระวังเรื่อง expiry date และ auto-renewal ให้ดี ถ้าจัดการดีๆ เว็บเราก็จะปลอดภัยและน่าเชื่อถือ SiamCafe Blog มีบทความอื่นๆ ที่น่าสนใจอีกเยอะ ลองเข้าไปอ่านดูได้เลย