ข้ามไปที่เนื้อหา

จัดการ TLS/SSL & Cipher บน NGINX Web Server (Linux Server)

ปรับค่า config ของ Nginx ดังนี้

  1. ไฟล์การตั้งค่า Nginx ส่วนใหญ่อยู่ใน /etc/nginx และไฟล์การตั้งค่าเว็บไซต์แต่ละเว็บไซต์มักจะอยู่ใน sites-available และ sites-enabled
  2. แก้ไขเนื้อหาตามตัวอย่าง
    server {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
    
        server_name [YOUR_SERVER_NAME];
    
        ssl_certificate /path/to/your/fullchain.pem;
        ssl_certificate_key /path/to/your/privkey.pem;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
        ssl_prefer_server_ciphers on;   
        ssl_stapling on;
        ssl_stapling_verify on; 
    
        location / {
            proxy_pass http://[YOUR_BACKEND];
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $host;
        }
    }
    

ssl_protocols TLSv1.2 TLSv1.3;

บรรทัดนี้กำหนดให้เซิร์ฟเวอร์รองรับโปรโตคอล TLS เวอร์ชัน 1.2 และ 1.3 เท่านั้น การกำหนดเช่นนี้จะช่วยให้มั่นใจว่าเซิร์ฟเวอร์จะไม่ใช้โปรโตคอลรุ่นเก่าที่มีช่องโหว่เช่น SSLv3, TLSv1.0 และ TLSv1.1 ซึ่งมีความปลอดภัยต่ำ

ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';

บรรทัดนี้กำหนดชุดรหัส (cipher suites) ที่เซิร์ฟเวอร์จะใช้ในการเข้ารหัสข้อมูล ชุดรหัสเหล่านี้เป็นชุดรหัสที่ทันสมัยและปลอดภัย ซึ่งใช้การเข้ารหัสที่แข็งแกร่ง (AES-256, AES-128) และวิธีการแลกเปลี่ยนกุญแจที่ปลอดภัย (ECDHE) นอกจากนี้ยังมีการใช้ชุดรหัส CHACHA20-POLY1305 ซึ่งมีประสิทธิภาพสูงบนอุปกรณ์ที่ไม่มีการเร่งความเร็วฮาร์ดแวร์สำหรับ AES

ssl_prefer_server_ciphers on;

บรรทัดนี้กำหนดให้เซิร์ฟเวอร์เลือกใช้ชุดรหัสที่เซิร์ฟเวอร์กำหนดแทนที่จะให้ไคลเอนต์เป็นผู้เลือก วิธีนี้ช่วยให้มั่นใจว่าเซิร์ฟเวอร์จะไม่ใช้ชุดรหัสที่อ่อนแอซึ่งไคลเอนต์อาจเสนอมา