Nginx

Workshop: SSL/TLS Security Setup ครบจบกับ Nginx

SSL/TLS (Secure Sockets Layer/Transport Layer Security) เป็นโปรโตคอลการรักษาความปลอดภัยที่สำคัญที่สุดสำหรับเว็บไซต์ทุกเว็บไซต์ในปัจจุบัน ไม่ว่าจะเป็นเว็บไซต์ขนาดเล็กหรือใหญ่ การตั้งค่า SSL/TLS ที่ถูกต้องจะช่วยปกป้องข้อมูลลูกค่าของคุณจากการถูกแอบชิงหรือโจมตี ในบทความ Workshop นี้ เราจะเดินทางสำรวจทั้งหมดตั้งแต่พื้นฐานของ SSL/TLS Security Setup จนถึงการทดสอบ Nginx SSL Configuration ที่มีประสิทธิภาพ

บทความนี้จะให้คำแนะนำแบบ Step-by-Step เพื่อให้คุณสามารถตั้งค่า SSL/TLS บนเซิร์ฟเวอร์ของคุณได้อย่างถูกต้องและครบสิ้น ตั้งแต่การเข้าใจโครงสร้างของ Certificate Chain ไปจนถึงการกำหนด HSTS Headers และ Auto-Renewal System ที่อัตโนมัติ

1. ความเข้าใจพื้นฐาน SSL/TLS และความสำคัญ

SSL/TLS คืออะไร

SSL (Secure Sockets Layer) และ TLS (Transport Layer Security) เป็นโปรโตคอลการเข้ารหัสที่ทำให้การสื่อสารระหว่างเครื่องไคลเอนต์กับเซิร์ฟเวอร์ปลอดภัยขึ้น TLS ถูกมองว่าเป็นเวอร์ชันที่ปลอดภัยและอัปเดตของ SSL ซึ่งเลิกใช้งานแล้ว

เมื่อคุณเข้าเยี่ยมชมเว็บไซต์ที่มีการตั้งค่า SSL/TLS Security Setup ที่ถูกต้อง ข้อมูลทั้งหมดที่ส่งไปยังเซิร์ฟเวอร์จะถูกเข้ารหัส (encrypt) ดังนั้นแม้แต่ถ้ามีผู้ล่วงรู้ข้อมูลดังกล่าวระหว่างการส่ง พวกเขาก็ไม่สามารถอ่านข้อมูลได้

ประโยชน์ของการใช้ Nginx SSL/TLS Configuration

  • ปกป้องข้อมูลส่วนตัวและข้อมูลการสำเร็จการชำระเงิน
  • เพิ่มความเชื่อถือของลูกค่าต่อเว็บไซต์ของคุณ
  • ปรับปรุงการจัดลำดับในเครื่องมือค้นหา (SEO) เพราะ Google ให้คะแนนสูงกว่าให้กับเว็บไซต์ที่มี HTTPS
  • ปฏิบัติตามข้อบังคับด้านความปลอดภัยระหว่างประเทศเช่น GDPR และ PCI-DSS
  • ป้องกันการโจมตี Man-in-the-Middle (MITM) ที่พยายามแอบชิงข้อมูลระหว่างการส่ง

2. ประเภทของ SSL/TLS Certificate

Domain Validation (DV) Certificate

DV Certificate เป็นประเภทที่ง่ายและรวดเร็วที่สุดในการขออนุญาต ผู้ให้บริการ Certificate Authority (CA) เพียงตรวจสอบว่าคุณมีการควบคุมโดเมนเท่านั้น โดยไม่ตรวจสอบข้อมูลองค์กรของคุณ

DV Certificate เหมาะสำหรับเว็บไซต์ทั่วไป บล็อก และเว็บแอปพลิเคชัน และสามารถขอได้ฟรีจาก Let’s Encrypt ซึ่งเป็นหนึ่งในตัวเลือกที่ดีที่สุดสำหรับผู้ใช้ทั่วไป

Organization Validation (OV) Certificate

OV Certificate มีการตรวจสอบที่เข้มงวดมากขึ้น ผู้ให้บริการ CA จะตรวจสอบไม่เพียงการควบคุมโดเมนเท่านั้น แต่ยังตรวจสอบข้อมูลองค์กรของคุณด้วย ทำให้มีระดับความน่าเชื่อถือที่สูงกว่า DV Certificate

Extended Validation (EV) Certificate

EV Certificate มีระดับการตรวจสอบสูงสุด CA จะทำการตรวจสอบที่ครอบคลุม รวมถึงสถานที่ตั้งของบริษัท และเอกสารทางกฎหมายอื่น ๆ เมื่อคุณใช้ EV Certificate แถบ URL ของเบราว์เซอร์จะแสดงชื่อบริษัทของคุณเป็นสีเขียว ซึ่งบ่งชี้ถึงการตรวจสอบที่สูงสุด

Wildcard Certificate

Wildcard Certificate เป็นประเภทของ Certificate ที่สามารถใช้ได้กับโดเมนหลักและ Subdomain ทั้งหมดของมัน ตัวอย่างเช่น Wildcard Certificate สำหรับ *.example.com สามารถใช้ได้กับ example.com, www.example.com, api.example.com เป็นต้น

3. SSL/TLS Security Setup ด้วย Let’s Encrypt และ Certbot

Let’s Encrypt เป็นหน่วยงาน Certificate Authority ที่ให้บริการ SSL/TLS Certificate ฟรี และ Certbot เป็นเครื่องมือที่ช่วยให้การตั้งค่า SSL/TLS Security Setup ง่ายขึ้น การใช้ Let’s Encrypt และ Certbot จะช่วยให้คุณสามารถสร้าง, อัปเดต และต่ออายุ SSL/TLS Certificate ได้อย่างสะดวก

ขั้นตอนการติดตั้ง Certbot

สำหรับ Ubuntu และ Debian:

sudo apt update
sudo apt install certbot python3-certbot-nginx

สำหรับ CentOS และ RHEL:

sudo yum install certbot python3-certbot-nginx

ขั้นตอนการสร้าง Certificate

หลังจากติดตั้ง Certbot เรียบร้อยแล้ว สามารถสร้าง Certificate ได้ง่ายๆ ดังนี้

sudo certbot certonly --standalone -d example.com -d www.example.com

Certbot จะถามว่าคุณต้องการอาศัยอยู่ที่ใด หลังจากนั้น คุณจะได้รับใบรับรอง Certificate สองไฟล์ที่สำคัญ

  • /etc/letsencrypt/live/example.com/privkey.pem — ไฟล์ Private Key
  • /etc/letsencrypt/live/example.com/fullchain.pem — ไฟล์FullChain Certificate

4. การตั้งค่า Nginx SSL/TLS Configuration

หลังจากได้ Certificate แล้ว ขั้นตอนต่อไปคือการตั้งค่า Nginx เพื่อให้ใช้ Certificate นี้ได้

ขั้นตอนการสร้าง Nginx Configuration

สร้างไฟล์ Nginx Configuration ใหม่ (เช่น /etc/nginx/sites-available/example.com) และเพิ่มเนื้อหาดังต่อไปนี้

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    # SSL Certificates
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # SSL Protocols and Ciphers
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # Document Root
    root /var/www/example.com/public_html;
    index index.html;
}

# Redirect HTTP to HTTPS
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

หลังจากสร้างไฟล์ Configuration แล้ว ให้เปิดใช้งานโดยสร้าง Symbolic Link

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

ทดสอบและรีโหลด Nginx Configuration

ก่อนรีโหลด Nginx ให้ทดสอบ Configuration ก่อน เพื่อให้มั่นใจว่าไม่มีข้อผิดพลาด

sudo nginx -t

ถ้าไม่มีข้อผิดพลาด ให้รีโหลด Nginx

sudo systemctl reload nginx

5. การกำหนด HSTS Headers

HSTS (HTTP Strict Transport Security) เป็นกลไกรักษาความปลอดภัยที่บอกให้เบราว์เซอร์ของผู้เยี่ยมชมเว็บไซต์ใช้การเชื่อมต่อ HTTPS เสมอ นี่คือวิธีการกำหนด HSTS Headers ใน Nginx

server {
    listen 443 ssl http2;
    server_name example.com;

    # HSTS Header
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    # ... ส่วนอื่นๆ ของ configuration
}

max-age=31536000 หมายความว่าเบราว์เซอร์จะจำได้ว่าเว็บไซต์นี้ต้อง HTTPS เป็นเวลา 1 ปี

6. ทดสอบ Nginx SSL Configuration

เมื่อตั้งค่า SSL/TLS Security Setup เรียบร้อยแล้ว ควรทดสอบเพื่อให้มั่นใจว่าการตั้งค่าถูกต้อง มีหลายวิธีในการทดสอบ

ใช้ OpenSSL

OpenSSL เป็นเครื่องมือที่สามารถทดสอบการเชื่อมต่อ SSL/TLS ได้

openssl s_client -connect example.com:443

ใช้ SSL Labs

SSL Labs (https://www.ssllabs.com/ssltest/) เป็นเว็บไซต์ที่ช่วยให้คุณทดสอบการตั้งค่า SSL/TLS Configuration ของเว็บไซต์ได้โดยระบุ URL ของเว็บไซต์ของคุณ

ใช้ Nginx Server Configuration Checker

ค้นหา “Nginx Server Configuration Checker” บนเบราว์เซอร์ของคุณ และป้อน Configuration ของคุณเพื่อตรวจสอบหาข้อผิดพลาด

7. การต่ออายุ Certificate โดยอัตโนมัติ

Certificate ของ Let’s Encrypt มีอายุ 90 วัน Certbot มีตัวเลือกในการต่ออายุโดยอัตโนมัติโดยการตั้งค่า Cron Job

ตั้งค่า Auto-Renewal

ในการตั้งค่า Auto-Renewal ให้เรียกใช้คำสั่ง Certbot Renew

sudo certbot renew --dry-run

ทดสอบ Dry-Run ก่อน จากนั้นให้ตั้งค่า Cron Job เพื่อเรียกใช้คำสั่งนี้เป็นประจำ

0 2 * * * sudo certbot renew --quiet && sudo systemctl reload nginx

คำสั่งนี้จะรีนิว Certificate ทุกวันเวลา 2:00 น. (UTC)

สรุป

SSL/TLS Security Setup ที่ถูกต้องและสมบูรณ์เป็นพื้นฐานสำหรับเว็บไซต์ที่ปลอดภัยและน่าเชื่อถือ ในบทความนี้ เราได้เรียนรู้

  • ความเข้าใจพื้นฐานของ SSL/TLS และความสำคัญของมัน
  • ประเภทต่างๆ ของ SSL/TLS Certificate
  • วิธีการสร้าง Certificate ด้วย Let’s Encrypt และ Certbot
  • วิธีการตั้งค่า Nginx SSL/TLS Configuration
  • วิธีการตั้งค่า HSTS Headers
  • วิธีการทดสอบ SSL/TLS Configuration ด้วยเครื่องมือต่างๆ
  • วิธีการตั้งค่า Auto-Renewal System เพื่อต่ออายุ Certificate โดยอัตโนมัติ

ด้วยการทำตามขั้นตอนเหล่านี้ คุณสามารถสร้าง SSL/TLS Security Infrastructure ที่แข็งแกร่งและปลอดภัยสำหรับเว็บไซต์ของคุณได้

แนะนำบริการ DE

ประสบการณ์ในการสร้าง SSL/TLS Security Setup ที่ปลอดภัยนั้นต้องใช้เวลาและความเชี่ยวชาญ ไม่ว่าคุณจะใช้เซิร์ฟเวอร์ที่คุณจัดการเองหรือใช้บริการ Cloud VPS/Cloud Hosting DE นั้นมีความเชี่ยวชาญและประสบการณ์มากมายในการช่วยให้คุณบรรลุเป้าหมายนี้

ไม่ว่าคุณจะเลือก Cloud VPS ของ DE สำหรับการควบคุมเต็มที่ หรือ Cloud Hosting ของ DE สำหรับการจัดการที่ง่าย DE มีทีมสนับสนุนเทคนิคที่พร้อมช่วยเหลือคุณ 24/7 เพื่อให้ SSL/TLS Security Setup ของคุณทำงานได้อย่างสมบูรณ์

เยี่ยมชม Cloud VPS ของ DE หรือ Cloud Hosting ของ DE วันนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับวิธีที่ DE สามารถช่วยให้คุณสร้าง SSL/TLS Security Infrastructure ที่ปลอดภัยและมีประสิทธิภาพ