HTTPS และ SSL/TLS คืออะไร?
HTTPS (HyperText Transfer Protocol Secure) คือบางส่วนที่ถูกเข้ารหัสและป้องกันในการส่งข้อมูลบนเว็บ โดยใช้ SSL/TLS Protocol แสดงที่สัญลักษณ์ กุญแจ แปดที่อยู่ในส่วน https:// โดยปกติ Browser จะเตือนเพจว่าเว็บไซต์ไม่ปลอดภัยหากเป็น HTTP
SSL (Secure Sockets Layer) เป็นโปรโตคอลรุ่นเก่าที่ถูกแทนที่ด้วย TLS (Transport Layer Security) ซึ่งเรียกว่า SSL เวอร์ชันใหม่และปลอดภัยกว่า ปัจจุบันเวอร์ชันที่ใช้คือ TLS 1.2 และ TLS 1.3
การทำงานของ TLS Handshake
- Client ส่ง ClientHello พร้อม TLS Version และ Cipher Suite ที่รองรับ
- Server ตอบ ServerHello เลือก Cipher Suite และส่ง SSL Certificate
- Client ตรวจสอบ Certificate ว่าออกโดย CA ที่เชื่อถือได้หรือไม่
- แลกเปลี่ยน Key เพื่อสร้าง Session Key สำหรับเข้ารหัส Symmetric
- การสื่อสารถูกเข้ารหัสด้วย Session Key ตลอดการเชื่อมต่อ
ประเภทของ SSL/TLS Certificate
| ประเภท | คำอธิบาย | เหมาะสำหรับ |
|---|---|---|
| DV (Domain Validated) | ยืนยันเฉพาะ Domain เท่านั้น เร็ว ฟรี | เว็บทั่วไป |
| OV (Organization Validated) | ยืนยันองค์กรด้วย | เว็บองค์กร |
| EV (Extended Validation) | ยืนยันองค์กรเข้มข้น แสดงชื่อองค์กรใน Browser | ธนาคาร, e-Commerce |
| Wildcard | ครอบคลุมทุก Subdomain | เว็บที่มีหลาย Subdomain |
| Multi-domain (SAN) | ครอบคลุมหลาย Domain ใน Certificate เดียว | หลายสินค้าหรือโดเมน |
ติดตั้ง HTTPS ด้วย Let’s Encrypt บน Cloud VPS
# ติดตั้ง Certbot สำหรับ Nginx บน Ubuntu
sudo apt update
sudo apt install certbot python3-certbot-nginx
# ขอและติดตั้ง Certificate อัตโนมัติ
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
# ตั้งค่า Auto-renewal
sudo certbot renew --dry-run
# Certbot สร้าง Cron Job อัตโนมัติสำหรับการต่ออายุทุก 90 วัน
การตั้งค่า TLS ที่ปลอดภัยบน Nginx
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# ใช้เฉพาะ TLS 1.2 และ 1.3
ssl_protocols TLSv1.2 TLSv1.3;
# Cipher Suite ที่ปลอดภัย
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
}
การเปลี่ยนเส้นทาง HTTP ไป HTTPS อัตโนมัติ
# Nginx - redirect HTTP to HTTPS
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$server_name$request_uri;
}
# Apache - redirect HTTP to HTTPS
<VirtualHost *:80>
ServerName yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
การตรวจสอบความปลอดภัยของ SSL/TLS
- SSL Labs: https://www.ssllabs.com/ssltest/ ตรวจสอบคะแนน SSL/TLS และ Cipher Suite
- Security Headers: https://securityheaders.com ตรวจสอบ HTTP Security Headers
- OCSP Checker: ตรวจสอบสถานะการยังใช้งานของ Certificate
สรุป
HTTPS และ SSL/TLS เป็นพื้นฐานของความปลอดภัยสำหรับทุกเว็บไซต์ การติดตั้ง Certificate ด้วย Let’s Encrypt นั้นฟรีและง่าย ควรบังคับใช้เฉพาะ TLS 1.2 และ 1.3 ปิด SSL และ TLS เวอร์ชันเก่า และตั้งค่า HSTS เพื่อป้องกัน Downgrade Attack

