ตั้งค่า SSL/TLS อย่างไรให้เว็บไซต์ปลอดภัย ได้คะแนน A+ จาก SSL Labs
ในยุคที่ Google ใช้ HTTPS เป็นปัจจัยจัดอันดับ และเบราว์เซอร์แสดงคำเตือน "Not Secure" สำหรับเว็บไซต์ที่ไม่มี SSL/TLS การตั้งค่า HTTPS จึงไม่ใช่ทางเลือกอีกต่อไป แต่เป็นสิ่งจำเป็นที่ทุกเว็บไซต์ต้องมี
SSL/TLS เป็นโปรโตคอลเข้ารหัสที่ปกป้องข้อมูลระหว่างเบราว์เซอร์กับเซิร์ฟเวอร์ เมื่อเว็บไซต์ใช้ SSL/TLS จะแสดง HTTPS และไอคอนกุญแจล็อกหน้า URL บ่งบอกว่าข้อมูลที่ส่งผ่านถูกเข้ารหัสเรียบร้อย สำหรับผู้ที่ใช้ Hosting หรือ VPS ของ DriteStudio การตั้งค่า SSL/TLS ถูกต้องคือขั้นตอนแรกในการรักษาความปลอดภัยของเว็บไซต์
ทำความรู้จัก SSL/TLS Certificate
ประเภทของ Certificate
SSL/TLS Certificate มีหลายระดับ Domain Validation (DV) ตรวจสอบแค่ความเป็นเจ้าของโดเมน ออกได้ภายในไม่กี่นาที เหมาะกับเว็บไซต์ทั่วไป Organization Validation (OV) ตรวจสอบทั้งโดเมนและองค์กร เหมาะกับเว็บไซต์ธุรกิจ ส่วน Extended Validation (EV) มีการตรวจสอบละเอียดที่สุด แสดงชื่อองค์กรในแถบ Address Bar เหมาะกับธนาคารและ E-commerce
Wildcard และ Multi-Domain Certificate
Wildcard Certificate ครอบคลุมโดเมนหลักและ Subdomain ทั้งหมด เช่น *.example.com ใช้ได้ทั้ง www, mail, api และอื่น ๆ ส่วน Multi-Domain Certificate หรือ SAN Certificate ใช้ได้กับหลายโดเมนในใบรับรองเดียว เหมาะกับองค์กรที่มีหลายเว็บไซต์
ขอ Certificate ฟรีจาก Let's Encrypt
Let's Encrypt เป็น CA ที่ให้บริการ SSL/TLS Certificate แบบฟรี ใช้เครื่องมือ Certbot ในการขอและจัดการ Certificate ได้อย่างสะดวก Certbot ตั้งค่าให้ Apache หรือ Nginx ได้โดยอัตโนมัติ รวมถึงต่ออายุทุก 90 วันให้เอง
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
ตั้งค่า SSL/TLS บน Apache
เปิดใช้ mod_ssl
ก่อนตั้งค่า SSL บน Apache ต้องเปิด Module mod_ssl ก่อน จากนั้นสร้าง VirtualHost สำหรับ Port 443 โดยกำหนด SSLEngine, SSLCertificateFile, SSLCertificateKeyFile และ SSLCertificateChainFile ให้ชี้ไปยังไฟล์ Certificate, Private Key และ Chain ตามลำดับ
ตั้งค่า Cipher Suite ที่ปลอดภัย
ปิดการใช้ Protocol เก่าอย่าง SSLv2 และ SSLv3 ที่มีช่องโหว่ เปิดใช้เฉพาะ TLS 1.2 และ TLS 1.3 กำหนดให้ Server เป็นผู้เลือก Cipher Suite ด้วย SSLHonorCipherOrder on เพื่อให้ใช้ Cipher ที่ปลอดภัยที่สุดเสมอ
ตั้งค่า SSL/TLS บน Nginx
กำหนดค่า Server Block
สำหรับ Nginx ให้สร้าง Server Block ที่ listen Port 443 พร้อม ssl กำหนด ssl_certificate และ ssl_certificate_key ให้ชี้ไปยังไฟล์ที่ถูกต้อง
ปรับแต่งประสิทธิภาพ
เปิด SSL Session Cache และ SSL Session Timeout เพื่อลดภาระ Handshake ซ้ำ เปิด OCSP Stapling เพื่อเพิ่มความเร็วตรวจสอบ Certificate และเปิด HTTP/2 เพื่อให้เว็บโหลดเร็วขึ้นอีก
Redirect HTTP ไปยัง HTTPS
หลังตั้งค่า SSL/TLS แล้ว ต้อง Redirect ทุกคำขอ HTTP ไป HTTPS อัตโนมัติ สำหรับ Apache ใช้ mod_rewrite หรือ Redirect directive ส่วน Nginx ใช้ return 301 ใน Server Block ที่ listen Port 80
ตั้งค่า HSTS เพิ่มความปลอดภัย
HTTP Strict Transport Security (HSTS) บอกเบราว์เซอร์ให้เข้าถึงเว็บไซต์ผ่าน HTTPS เสมอ โดยไม่ต้องรอ Redirect จาก Server ช่วยป้องกัน SSL Stripping Attack ตั้งค่าโดยเพิ่ม Header Strict-Transport-Security ในการตอบกลับ
ทดสอบการตั้งค่า SSL/TLS
หลังตั้งค่าเสร็จ ควรทดสอบด้วย SSL Labs Server Test ตั้งเป้าให้ได้คะแนน A หรือ A+ เครื่องมือนี้จะให้คะแนนและรายงานปัญหาอย่างละเอียด ช่วยให้ปรับแต่งได้ตรงจุด
การต่ออายุ Certificate
SSL/TLS Certificate มีอายุจำกัด สำหรับ Let's Encrypt คือ 90 วัน ส่วน Certificate จาก CA อื่นมักมีอายุ 1 ปี ตั้งค่าต่ออายุอัตโนมัติเพื่อป้องกัน Certificate หมดอายุ ซึ่งจะทำให้เว็บไซต์แสดงคำเตือนความปลอดภัยและผู้ใช้เข้าไม่ได้
คำถามที่พบบ่อย (FAQ)
SSL กับ TLS ต่างกันอย่างไร?
SSL เป็นเวอร์ชันเก่าที่ไม่ปลอดภัยแล้ว TLS เป็นเวอร์ชันใหม่ที่ใช้งานอยู่ในปัจจุบัน แต่คนทั่วไปมักเรียกรวม ๆ ว่า SSL แม้จริง ๆ แล้วจะใช้ TLS 1.2 หรือ 1.3
ใช้ Let's Encrypt ปลอดภัยเท่า Certificate เสียเงินไหม?
ในแง่การเข้ารหัส ปลอดภัยเท่ากัน ความแตกต่างอยู่ที่ระดับการตรวจสอบ Let's Encrypt ให้แค่ DV Certificate ส่วน Certificate เสียเงินมี OV และ EV ที่ตรวจสอบองค์กรด้วย
ทำไมเว็บไซต์มี SSL แล้วยังแสดง Mixed Content Warning?
เพราะหน้าเว็บโหลด Resource บางอย่าง เช่น รูปภาพ CSS หรือ JavaScript ผ่าน HTTP แทน HTTPS ต้องแก้ URL ทั้งหมดให้เป็น HTTPS หรือใช้ // แทน http://
สรุป
การตั้งค่า SSL/TLS เป็นขั้นตอนสำคัญในการปกป้องเว็บไซต์ ตั้งแต่เลือก Certificate ตั้งค่าบน Web Server ปรับ Cipher Suite ไปจนถึงต่ออายุ Certificate สำหรับองค์กรที่ต้องการความปลอดภัยสูงสุด Dedicated Server หรือ Colocation ของ DriteStudio ช่วยให้ควบคุมการตั้งค่าได้อย่างเต็มที่ ติดต่อ DriteStudio เพื่อรับคำปรึกษาได้เลย