HTTPS และ SSL/TLS คืออะไร? การเข้ารหัสข้อมูลเว็บไซต์แบบถูกต้อง

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

  1. Client ส่ง ClientHello พร้อม TLS Version และ Cipher Suite ที่รองรับ
  2. Server ตอบ ServerHello เลือก Cipher Suite และส่ง SSL Certificate
  3. Client ตรวจสอบ Certificate ว่าออกโดย CA ที่เชื่อถือได้หรือไม่
  4. แลกเปลี่ยน Key เพื่อสร้าง Session Key สำหรับเข้ารหัส Symmetric
  5. การสื่อสารถูกเข้ารหัสด้วย 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